举例:按钮b1,关闭窗体。按钮b2,改变自身文本、隐藏b1
新建项目,QWidget类,不勾选ui
头文件:
#ifndef MYWIDGET_H #define MYWIDGET_H #include <QWidget> #include <QPushButton> //引入按钮 class MyWidget : public QWidget { Q_OBJECT public: MyWidget(QWidget *parent = 0); ~MyWidget(); void mySlot(); //自定义的槽函数 private: QPushButton b1; //创建对象 QPushButton *b2; }; #endif // MYWIDGET_H
源文件:
#include "mywidget.h" MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { b1.setParent(this);//指定父对象,方法一 b1.setText("按钮1"); b1.move(100,100); //指定父对象,方法二 b2=new QPushButton(this); //指针需要动态分配空间 b2->setText("按钮2"); //信号、槽(系统再带的函数) connect(&b1,&QPushButton::pressed,this,&MyWidget::close);//b1按下,关闭窗体 //信号、槽(自定义的函数) connect(b2,&QPushButton::pressed,this,&MyWidget::mySlot);//b2按下,b2内容改变 connect(b2,&QPushButton::released,&b1,&QPushButton::hide);//b2抬起,b1隐藏 } void MyWidget::mySlot()//自定义的槽函数 { b2->setText("被更改"); } MyWidget::~MyWidget() { }
主程序:
#include "mywidget.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MyWidget w;//执行MyWidget类内的程序 w.show(); return a.exec(); }