QT6(59)7.2 设计与使用自定义对话框,篇一:本例题的主程序是演示二维表格的模型与视图功能 QTableView,但把如何操作表格的需求,刻意通过对话框来与人们的交互。本文先实现表格大小对话框

(209) 理论讲解 ,本例题里主窗体会先后调用三个对话框 :

在这里插入图片描述

++ 老师的例题里,从来没有直接为 QMainWindow 的主窗体设置布局而是在代码里直接把 QTableView 设置为主窗体,这样的好处是减少了一层,图像渲染的时候,少渲染一层,效率上当然会快一些。

在这里插入图片描述

(210)代码实现 ,先是准备创建自定义对话框 ,如何通过 QT 的可视化编程界面引入自定义对话框呢

在这里插入图片描述

++然后

在这里插入图片描述

++然后

在这里插入图片描述

++最后

在这里插入图片描述

++ 看看这些新的自定义对话框的文件组成,再往里添加需要的控件,由易到难

在这里插入图片描述

(211)**本条目开始学习设置表格大小的对话框 class TDialogSize ** :

在这里插入图片描述

++ 在 QT 里如何一次性为多个成员函数添加实现

在这里插入图片描述

++ 接着给出本类的 .cpp 文件的实现

在这里插入图片描述

++还有本表格大小对话框上两个按钮的功能实现

在这里插入图片描述

++ 补充对话框的成员函数的基础知识

在这里插入图片描述

(212)回到主程序,由主窗体完善对表格大小对话框的调用给出主窗体头文件 mainwindow . h 的源代码版本

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include    <QLabel>
#include    <QStandardItemModel>
#include    <QItemSelectionModel>
#include    <QModelIndex>

#include    "tdialogheaders.h"
#include    "tdialoglocate.h"

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

private:
    //用于状态栏的信息显示
    QLabel  * labCellPos ;   //当前单元格行列号
    QLabel  * labCellText;   //当前单元格内容

    QStandardItemModel  * m_model    ;  //数据模型
    QItemSelectionModel * m_selection;  //Item选择模型

    TDialogHeaders      * dlgSetHeaders = nullptr;
    //设置表头文字对话框, 一次创建,exec()重复调用

protected:
    void closeEvent(QCloseEvent * event);    //关闭窗口时,询问是否退出

public:
    MainWindow(QWidget * parent = 0);
    ~MainWindow();

    void    selectCell(int row,int column);    //选择一个单元格,由dlgLocate调用
private slots:
    void do_model_currentChanged(
        const QModelIndex & current, const QModelIndex & previous);

    void on_actTab_SetSize_triggered();

    void on_actTab_SetHeader_triggered();

    void on_actTab_Locate_triggered();

    void on_tableView_clicked(const QModelIndex &index);

public slots://自定义的公共槽函数
    void    do_setCellText(int row, int column, QString &text); //设置一个单元格的内容
//    void    do_setActLocateEnable(bool enable); //设置actTab_Locate的enabled属性

signals://自定义信号,在tableView上点击时发射此信号
    void    cellIndexChanged(int rowNo, int colNo); //当前单元格发生变化

private:
    Ui::MainWindow *ui;

};

#endif // MAINWINDOW_H

++本节课里随后会逐步完善头文件里出现的成员函数,先给出本主程序窗体类的构造函数 ,这里面会生成模型与视图结构:

在这里插入图片描述

++补充 ,使用新版本的构造函数

在这里插入图片描述

++把主窗体上的工具栏里的按钮,关联到表格大小对话框上

在这里插入图片描述

++ 给出测试结果

在这里插入图片描述

++本自定义对话框实现完成

(213)

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangzhangkeji

谢谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值