24-主窗口类的设计
9.4.3 主窗口类的设计
创建一个Widget Application项目,主窗口继承自QMainWindow,按照图9-15进行窗口可视化设计。主窗口上放置一个QGraphicsView组件后提升为QWChartView类。
主窗口类MainWindow的定义如下:
class MainWindow : public QMainWindow
{
Q_OBJECT
private:
QLabel *labXYValue; //状态栏显示文字标签
void createChart(); //创建图表
void prepareData(); //准备数据
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_LegendMarkerClicked(); //图例单击槽函数,自定义槽函数
void on_mouseMovePoint(QPoint point); //鼠标移动事件,自定义槽函数
void on_actZoomReset_triggered(); //工具栏按钮,原始大小
void on_actZoomIn_triggered(); //工具栏按钮,放大
void on_actZoomOut_triggered(); //工具栏按钮,缩小
private:
Ui::MainWindow *ui;
};
QWChartView类已经实现了鼠标拖动区域放大功能和按键快捷操作功能,在主窗口类MainWindow中无需再实现这些功能。主窗口需要实现的功能包括:
- 绘制图表,createChart()函数用于初始化图表组件,prepareData()函数用于为图表创建序列并添加数据。
- 定义一个槽函数on_mouseMovePoint(QPoint),与QWChartView的mouseMovePoint(QPoint)信号相关联,用于实时显示鼠标光标处的坐标值。
- 定义一个槽函数on_LegendMarkerClicked(),与图表的图例marker的clicked()信号相关联,实现单击图例时显示或隐藏相关序列。