上一节我们搞定了新建工程和编辑窗体。
这一节我们学一下怎么响应用户的操作,和用代码改变控件的内容。
我们继续接着上一节的工程使用,上一节我们已经新建了一个Lable了,下面我们给Lable的objectName设置为lb_Hello(点击Lable然后在右侧的属性栏里设置)。其实这就是设置Lable的变量名。
然后我们再从左侧控件库里拖一个Button进来,并设置它的text为“点我呀”。
做完后,我们的窗体应该是这样的:
给窗体添加按钮
然后我们实现如下功能:
- 点击按钮后将lb_Hello显示的文字HelloWorld变成“大家好,我是老赵”。
- 设置完全lb_Hello的内容后,弹出一个设置成功的提示对话框。
在QT中给按钮绑定点击事件和以前在BCB或C#中不一样,直接双击没有反映。
后来经搜索得知,要建接口函数,还要鼓捣消息槽,这很不科学很不现代化。
但经过我摸索,我发现其实没那么复杂,只需要在按钮上按鼠标右键,然后选择“转到槽”,然后在弹出的对话框里选“clicked()”然后按OK就可以了,IDE会自动创建好函数并绑定消息。
转到槽
选择clicked(),点击OK
然后会自动跳转到函数体内。
然后我们写入代码
void MainWindow::on_pushButton_clicked() { // 窗体所有控件都在ui这个对象中。 ui->lb_Hello->setText("大家好,我是老赵!"); // 弹消息框,注意要引入头部文件。 QMessageBox::information(this,"修改Lable","Lable的内容已修改。",QMessageBox::Ok); }
要注意的是要使用QMessageBox,必须要引入头部文件。
#include "QMessageBox"
在QT的窗体中的所有的控件,都在一个ui对象中,操作的时候要ui->对象objectName,才能操作。
有个怪事:在网上的教程里,直接像我上面的代码那样用中文,是会乱码的。需要tr()一下,但我在这里是直接使用中文的,并没有什么不妥,一切都是正常的,奇怪了,不信你看:
运行正常
事出无常必有妖。皮裤套棉裤,必定有缘故。
继续探索中。。。(我可写个什么程序呀?)