信号与槽的使用
前言:
本文操作均为在vs2015+QT5.9.5版本中执行
头文件:textsignalandslot.h
#pragma once
#include <QtWidgets/QWidget>
#include "ui_textsignalandslot.h"
class TextSignalAndSlot : public QWidget
{
Q_OBJECT
public:
TextSignalAndSlot(QWidget *parent = Q_NULLPTR);
signals:
void messagepushButton_signal();
public slots:
void messagepushButton_slot();
private:
Ui::TextSignalAndSlotClass ui;
};
UI文件:ui_textsignalandslot.h
/********************************************************************************
** Form generated from reading UI file 'textsignalandslot.ui'
**
** Created by: Qt User Interface Compiler version 5.9.5
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_TEXTSIGNALANDSLOT_H
#define UI_TEXTSIGNALANDSLOT_H
#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_TextSignalAndSlotClass
{
public:
QPushButton *closepushButton;
QPushButton *minimumpushButton;
QPushButton *messagepushButton;
void setupUi(QWidget *TextSignalAndSlotClass)
{
if (TextSignalAndSlotClass->objectName().isEmpty())
TextSignalAndSlotClass->setObjectName(QStringLiteral("TextSignalAndSlotClass"));
TextSignalAndSlotClass->resize(988, 670);
closepushButton = new QPushButton(TextSignalAndSlotClass);
closepushButton->setObjectName(QStringLiteral("closepushButton"));
closepushButton->setGeometry(QRect(160, 170, 171, 151));
minimumpushButton = new QPushButton(TextSignalAndSlotClass);
minimumpushButton->setObjectName(QStringLiteral("minimumpushButton"));
minimumpushButton->setGeometry(QRect(430, 170, 171, 151));
messagepushButton = new QPushButton(TextSignalAndSlotClass);
messagepushButton->setObjectName(QStringLiteral("messagepushButton"));
messagepushButton->setGeometry(QRect(670, 170, 171, 151));
retranslateUi(TextSignalAndSlotClass);
QObject::connect(TextSignalAndSlotClass, SIGNAL(messagepushButton_signal()), TextSignalAndSlotClass, SLOT(messagepushButton_slot()));
QObject::connect(messagepushButton, SIGNAL(clicked()), TextSignalAndSlotClass, SLOT(messagepushButton_slot()));
QMetaObject::connectSlotsByName(TextSignalAndSlotClass);
} // setupUi
void retranslateUi(QWidget *TextSignalAndSlotClass)
{
TextSignalAndSlotClass->setWindowTitle(QApplication::translate("TextSignalAndSlotClass", "TextSignalAndSlot", Q_NULLPTR));
closepushButton->setText(QApplication::translate("TextSignalAndSlotClass", "\345\205\263\351\227\255\346\214\211\351\222\256", Q_NULLPTR));
minimumpushButton->setText(QApplication::translate("TextSignalAndSlotClass", "\346\234\200\345\260\217\345\214\226\346\214\211\351\222\256", Q_NULLPTR));
messagepushButton->setText(QApplication::translate("TextSignalAndSlotClass", "\346\211\223\345\215\260\344\277\241\346\201\257", Q_NULLPTR));
} // retranslateUi
};
namespace Ui {
class TextSignalAndSlotClass: public Ui_TextSignalAndSlotClass {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_TEXTSIGNALANDSLOT_H
主函数:main.cpp
#include "textsignalandslot.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
TextSignalAndSlot w;
w.show();
return a.exec();
}
实现文件:textsignalandslot.cpp
#include "textsignalandslot.h"
#include <QDebug>
TextSignalAndSlot::TextSignalAndSlot(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
//关闭按钮
connect(ui.closepushButton, SIGNAL(clicked()), this, SLOT(close()));
//最小化按钮
connect(ui.minimumpushButton, SIGNAL(clicked()), this, SLOT(showMinimized()));
//打印信息
connect(ui.messagepushButton, SIGNAL(clicked()), this, SLOT(messagepushButton_slot()));
}
void TextSignalAndSlot::messagepushButton_slot()
{
qDebug() << QString::fromLocal8Bit("我是打印信息");
}