云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

小白学QT 使用VS 给 qt 添加信号槽

jxf315 2024-12-17 14:07:55 教程文章 36 ℃

VS中的QT设计器

1 自定义槽函数

右键没有转到槽 自动添加槽的功能,需要手动添加下

比如:


private slots:

void Btn_OpenClick();



#include <QtWidgets/QDialog>
#include "ui_QtGuiApplication1.h"

class QtGuiApplication1 : public QDialog
{
	Q_OBJECT

public:
	QtGuiApplication1(QWidget *parent = Q_NULLPTR);



private:
	Ui::QtGuiApplication1Class ui;


private slots:
    void on_chkBoxUnder_clicked();
	void Btn_OpenClick();
};


#include "QtGuiApplication1.h"
#include <QMessageBox>
QtGuiApplication1::QtGuiApplication1(QWidget *parent)
	: QDialog(parent)
{
	ui.setupUi(this);
}


void QtGuiApplication1::on_chkBoxUnder_clicked()
{
	int i = 0;
	i++;
}

void QtGuiApplication1::Btn_OpenClick(){
	QMessageBox msg;
	msg.setText("HelloWord!");
	msg.exec();
}


2 QT设计器中关联槽函数

这样定义后,QT设计器就可以关联槽函数




QT槽函数 默认关联关系


setupUI()里发现了如下的一条语句:

QMetaObject::connectSlotsByName(QtGuiApplication1Class);

connectSlotsByName(QWDialog) 函数将搜索 QWDialog 界面上的所有组件,将信号与槽函数匹配的信号和槽关联起来,它假设槽函数的名称是:

void on_<object name>_<signal name>(<signal parameters>);


例如,ID为 chkBoxUnder, 自动生成的槽函数是:

void on_chkBoxUnder_clicked(bool checked);

按这种格式书写槽函数后,

connectSlotsByName() 就会将此信号和槽函数关联起来,如同执行了下面的这样一条语句:

connect(chkBoxUnder, SIGNAL(clicked (bool)),this, SLOT (on_chkBoxUnder_clicked (bool));

最近发表
标签列表