学习环境:Windows10 + QT5.13 + QT Creater4.9.1(2019-08-10 22:02:30)

1.基本工程创建操作

  常规操作创建画面,可选择QDialog、MainWindow、QWidget三种类型。可选择直接创建相应的 ui 文件,控件的添加可以在编辑模式下使用代码创建,也可以在设计模式下通过拖动添加;控件的属性可以在编辑模式下用代码修改,也可以在设计模式下通过属性栏修改;每一个控件通过其唯一的 objectName 寻找,所以要细心设置控件的objectName。

2.常用且重要的操作

  QT 特有的信号(signal)和槽(slot):signal 关联发出者,slot 关联接收者,两者各有一个对应的函数操作;QT中已经自带了一些 signal 和 slot 函数,用户可以直接使用;如果用户自定义的signal信号,使用 emit 关键字发出信号;signal 和 slot 需要绑定起来才能实现正常的发送与接收,这种连接可以使用代码 connect 函数执行,也可以在设计模式下的 Edit signal/slot 功能中通过连线方式绑定,最终实现 signal 和 slot 的代码(如果是 QT 自带的 signal 和 slot 也可以视情况省略该操作)。

3.实际操作练习

  新建两个窗口(此处选择了 MainWindow 和 Dialog),新建时选择创建 ui 文件。在每个画面添加两个 QPushButton 控件,主界面的按钮实现跳转至从界面和关闭,从界面按钮实现一个弹出框和返回至主界面。在 mainwindow.h 中声明一个 Dialog 类的实例:

 private:
Ui::MainWindow *ui;
Dialog *sub;

  在 mainwindow.cpp 中,从主界面的构造函数中创建子界面的实例,并且连接两个画面( signal 和 slot 的绑定),一定要先创建实例再绑定:

 MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
sub = new Dialog(this);
connect(sub,SIGNAL(mysignal()),this,SLOT(re_show()));
}

  在子界面 dialog.h 中声明一个 signal :

 public:
explicit Dialog(QWidget *parent = nullptr);
~Dialog(); signals:
void mysignal();

  在子界面的 cpp文件,dialog.cpp 实现 signal 的发送,发送使用 emit 关键字:

 void Dialog::on_back_clicked()
{
this->hide();
emit mysignal();
}

4.总结

  从本次记录主要了解 QT 的 signal 和 slot 形式与基本使用,学习两个界面如果通过 signal 和 slot 联系在一起。

  每使用一种控件,需要把对应的类包含进去!!! eg. #include <QPushButton>//包含按钮的类

/***************************************未完待续******************************************/

最新文章

  1. Web前端开发高手进阶
  2. Oracle计算时间函数(对时间的加减numtodsinterval、numtoyminterval) (转)
  3. 更新lispbox中的ccl和slime版本
  4. BestCoder Round #90 //div all 大混战 一题滚粗 阶梯博弈,树状数组,高斯消元
  5. 解决jsp中文乱码问题
  6. CentOS6下Haproxy的安装配置
  7. Ubuntu 14.04 LTS Server 无法挂载光盘 启动initramfs等问题
  8. php基础02:变量
  9. 【标题】一本帮你提高Excel办公效率的VBA书
  10. POJ 1486 Sorting Slides (二分图关键匹配边)
  11. php文件锁解决少量并发问题
  12. Zero Downtime Upgrade of Oracle 10g to Oracle 11g Using GoldenGate — 2
  13. 从零开始Unity3D游戏开发【3烘焙】
  14. poj 3608 Bridge Across Islands 两凸包间最近距离
  15. COM问题
  16. [转]Maven如何手动添加jar包到本地Maven仓库
  17. 通过 UI 管理 docker
  18. 【js】高阶函数是个什么?
  19. NIO相关概念之Selector
  20. cesium js学习一加载三维模型【转】

热门文章

  1. Xamarin.Forms快速入门-深入探讨
  2. haproxy2.0 dataplaneapi 简单说明
  3. [PHP]Laravel无法使用COOKIE和SESSION的解决方法
  4. python: isdigit int float 使用
  5. 阿里云ECS服务器相关配置以及操作---上(初学者)
  6. sentinel-dashboard安装、运行(docker)
  7. ssh scp 上传下载文件
  8. Error creating bean with name &#39;userRepository&#39;: Invocation of init method failed;
  9. SpringMVC中使用到DataBinder的类
  10. Springboot Mybatis 集成 Redis