【QT】自我学习笔记第二章——简单的按钮及槽
快捷目录
从标题开始吧
让我们先从修改视窗的标题开始
这里我命名的工程名为Myproject01,为了解决汉字乱码的问题,需要加上一行
#pragma execution_character_set(“utf-8”)
来解决汉字乱码。
之后在源文件里加入标题
#include "Myproject01.h" #pragma execution_character_set("utf-8") //解决汉字乱码问题 Myproject01::Myproject01(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); setWindowTitle("我的工程"); }
修改之后如图
添加按钮
首先导入模块
QtWidgetsQ
并且创建按钮指针
QPushButton *button = new QPushButton(this);
设置按钮的名称
button->setText(tr(“按钮01”));
完整代码如下:
#include "Myproject01.h" #include <QtWidgets> #pragma execution_character_set("utf-8") //解决汉字乱码问题 Myproject01::Myproject01(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); setWindowTitle("我的工程"); QPushButton *button = new QPushButton(this); // QPushButton是QT的按钮类 button->setText(tr("按钮01")); // 按钮显示文本 }
运行完毕后效果如图:
整合我们的文件
学习到这里可能不少小伙伴都会想到,如果照这么编辑下去,随着功能的增加,主函数的内容将越来越大,既不美观也不方便之后的修改编辑,为此,我专门将每个功能创建不同的函数,以面向对象的思路,在不同函数中设置我们想要设置的内容。
首先在项目头文件里声明我们的函数
public: Myproject01(QWidget *parent = Q_NULLPTR); void Mytitle(); void Mybotton();
之后在源文件里定义我们的函数
#include "Myproject01.h" #include <QtWidgets> #pragma execution_character_set("utf-8") //解决汉字乱码问题 Myproject01::Myproject01(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); Mytitle(); Mybotton(); } void Myproject01::Mytitle() { setWindowTitle("我的工程"); } void Myproject01::Mybotton() { QPushButton *button = new QPushButton(this); // QPushButton是QT的按钮类 button->setText(tr("按钮01")); // 按钮显示文本 }
编译的结果完全一致。
优化窗口
我们可以通过
this->resize(800, 600);
来设置窗口的大小,这里我使用的是800x600分辨率
之后通过
button->move(400, 300);
将我们的按钮移动到合适的位置,这里数字代表的也是对应像素点的位置
结果如下图:
槽函数
槽函数实际上是QT里信号连接中一个节点,首先我们要弄懂QT中信号的连接机制。
形象来说,就是通过某一个触发点,如用户点击了某个按钮之后,连接到用户想要触发的功能点,比如弹出一个文本视窗显示文本。
以一个最简单的信号槽连接为例,我们在之前的功能基础上,增加当用户点击按钮01时,能够自动弹出信息,并显示Hello World。
首先,在头文件处我们先声明一个槽函数,这里我命名为myslot()
private slots: void myslot();
这里为了保护我们显示的信息不被修改,最好使用private slots
之后我们通过调用QMessageBox显示信息的函数,在源文件里来定义我们的myslot()函数
void Myproject01::myslot() { QMessageBox::information(this, tr("提示"), tr("Hello World!")); }
这里前者为弹出窗口的标签名,后者为具体显示的内容。
然后在之前的Mybotton()函数中,使用连接函数
connect(button, SIGNAL(clicked()), this, SLOT(myslot()));
通过连接函数的定义
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType = Qt::AutoConnection); static QMetaObject::Connection connect(const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type = Qt::AutoConnection);
可知,第一项为触发项,该项目中即为我们设置的按钮01,第二项可以理解为信号的触发,这里设置clicked()即为当我们点击该按钮时触发条件,而最后一项即对应的槽函数,只需要将我们定义的槽函数置入即可。
结果即如下图:
- 点赞
- 收藏
- 分享
- 文章举报
- 【QT】自我学习笔记第三章——菜单与工具栏
- 【QT】自我学习笔记第四章——整合一个小项目
- 【QT】自我学习笔记第五章——QT+OPENGL的开始
- Qt学习笔记——connect()函数的使用
- PyCharm配置QtDesigner
- pyqt5无法安装的解决方法
- PyQt5.Qtimer模块调用返回QObject::startTimer: Timers can only be used with threads started with QThread的问题
- ubuntu 12.04下安装Qt遇到的问题
- 已解决 Qt5.12连接MySQL 8.0的问题:QSqlDatabase: QMYSQL driver not loaded
- 基于微服务和mini2440的WebSocket B/S视频监控及MQTT物联网应用系统
- [QT][Qchart][CreateDefaultaxis]
- QT 如何设置series的图例名称
- qt qchartview如何关闭矩形框缩放功能
- Qt遇到“Cannot run compiler 'clang++' out ”
- QT 调试时出现“The GDB Terminated unexceptly(exit code 3)”解决办法
- PyQt5开发环境配置并使用
- PyQt5打开文件对话框QFileDialog实例代码
- 基于QT+MySQL实现的学生信息管理系统
- 学习笔记(01):PyQt5开发与实战视频教程-尺寸策略(sizePolicy)
- QT用xml流怎么遍历属性