(作为一个QT and C++菜鸟,我实在不想承认我写个 “Hello World” 写了大半天,但事实就是如此,反反复复写了七八遍我才敢确定我会写”Hello World“了)
(好歹挣扎了大半天天,这里就做个记录叭!!)
一、创建QT项目
如图,这里选择 “QT Widgets Application” (PS:要求不高的话,入门级的我是把 ”QT Widgets Application“ 和 ”QT GUI Application“ 当成一个东西的)
之后就一直 " NEXT " 直到 “finish” 为止。
然后,点击”运行“,如果能看到下面这个界面,则表示创建成功。
二、编写”Hello world“
双击 “XXXXX.h” 打开QT 设计器
保存之后回到VS界面,点击“XXXXX.h”, 在“XXXXX.h”里声明“槽函数”(后面就是在这个函数里写 “Hello World”)
(注意:声明的时候是 “private slots:” ,不是单纯的 “pricvate:" ,我一开始就是这里没注意,导致后面按钮怎么都没反应)
private slots:
void button1_clicked();
点击 ”XXXXXX.cpp" (注意,不是"main.cpp"),关联信号和槽,并且编写槽函数
connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(button1_clicked()));
//sender: ui.pushButton,发送信号者,后面的"pushButton"是QT设计器中按钮的“objectName”
//signal: SIGNAL(clicked()),信号,括号里面clicked()是QT自带的信号,如果没有自定义信号的话,这里一定不能拼错。
//receiver: this ,一般接收信号这里都写 this (不排除别的情况)
//SLOT: SLOT(button1_clicked()),槽函数,这里表示点击按钮之后执行的动作,比如我这里的显示 “Hello world”
QT自带的信号查看:
(PS:上面的步骤之后,如果想回到可以拖拉控件的状态,只需要点击上面第一步的按钮 左边的按钮即可)
三:运行效果
四:总结一下我掉坑的地方
1. 信号函数不规范
connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(button1_clicked()));
我一开始没注意,“SIGNAL(clicked())” 写成 “SIGNAL(click())” ,运行时点击按钮一直没反应,这里如果没有自定义信号,就必须写QT自带的信号,不能拼错。
另外,关于connect()里面sender、signal、receiver、slot 的解释,详见:
Qt 定义信号 signals 和 槽 slots
2. 双击 “XXXXXX.ui”打不开QT设计器,或者报错闪退
解决方法详见链接 :Qt VS中双击ui文件无法打开的问题
3. 槽的申明
槽的申明一定要规范:注意是 “private slots:” ,不是的 “pricvate:" ,关键字“slots”一定不能少!!!