您的位置:首页 > 编程语言 > Qt开发

【QT】自我学习笔记第二章——简单的按钮及槽

2020-02-16 23:57 597 查看

快捷目录

从标题开始吧

让我们先从修改视窗的标题开始
这里我命名的工程名为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()即为当我们点击该按钮时触发条件,而最后一项即对应的槽函数,只需要将我们定义的槽函数置入即可。
结果即如下图:

  • 点赞
  • 收藏
  • 分享
  • 文章举报
智慧的小⑨ 发布了5 篇原创文章 · 获赞 1 · 访问量 75 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: