qt,基类,基名
- QT:跨平台的c++图形用户程序框架
- 基类:(也称:父类)qt中的几个类别:QMainWindow(PC端);QDialog(对话框);QWidget(图形界面,比较常用)
- 基名:(也称:子类、派生类)如:class MyWidget::pubic
- 编译的快捷键:Ctrl+R
QT基本编程笔记–day01_QTtest
- QApplication应用类程序
- QT头文件没有.h,有文件和类名一样
- 有且仅有一个应用程序类的对象
- 第一个qt程序解析:MyWidget继承于QWidget,QWidget是一个窗口基类,所以MyWidget也是窗口类
- 设置窗口标题使用SetWindowTitle(Qstring(“标题”));
- w就是一个窗口,窗口创建是默认隐藏的,需要人为显示(w.show();)
- a.exe?;让程序一直执行,等待用户操作(等待事件发生)
- main.cpp的基本框架
`#include int main (int argc, char*argv[]) { QApplication a(argc,argv); //我们写的代码 return a.exe?; } - Q_OBJFCJ信号与槽的时候使用(暂时没有了解)
- 高于4版本的要在.pro里添加 QT+=widgets,为了兼容qt4
指定父对象day01_HellloQT
- a指定b为他的父对象,a放在b的上面
- 指定父对象有两种方式:1)setparent(&父对象) 2)通过构造函数传参
- 指定父对象只要父对象显示,上面的子对象自动显示
- b.move(坐标);移动坐标
- 编写按键:
#include QPushButton b; b.setText("") //给按键设置内容
信号和槽 day01_SingLandSlot
-
标准信号和槽:connect(&b1, &QPushButton::pressed, this, &MainWidget::close); -
&b1:信号发出者,指针类型 -
&QPushButton::pressed:处理信号,&发送者的类名::信号的名字 -
this:信号接收者 -
&MainWidget::close:槽函数,信号处理函数 &接受的类名::槽函数名字。 -
自定义槽,普通函数的用法 -
QT5:任意成员函数,普通全局函数,静态函数,槽函数都需要与 信号一直(参数,返回值) -
由于信号没有返回值,槽函数一定没有返回值 -
两个独立的窗口: hide隐藏 子窗口头文件包含用“ ” -
Signals:新号必须由signals来声明;信号没有返回值,但可以有参数;信号就是函数声明,只需声明,无需定义 -
使用:emit mysignal();
附上两个独立窗口的代码
mainwidget.h
#ifndef MAINWIDGET_H
#define MAINWIDGET_H
#include <QWidget>
#include <QPushButton>
#include "subwidget.h"
class MainWidget : public QWidget
{
Q_OBJECT
public:
MainWidget(QWidget *parent = 0);
~MainWidget();
void mySlot();
void changeWin();
void dealSub();
private:
QPushButton b1;
QPushButton *b2;
QPushButton b3;
SubWidget w;
};
#endif
subwidget.h
#ifndef SUBWIDGET_H
#define SUBWIDGET_H
#include <QWidget>
#include <QPushButton>
class SubWidget : public QWidget
{
Q_OBJECT
public:
explicit SubWidget(QWidget *parent = nullptr);
void sendSlot();
signals:
void mySingnal();
public slots:
private:
QPushButton b;
};
#endif
main.cpp
#include "mainwidget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWidget w;
w.show();
return a.exec();
}
mainwidget.cpp
#include "mainwidget.h"
#include <QPushButton>
MainWidget::MainWidget(QWidget *parent)
: QWidget(parent)
{
b1.setParent(this);
b1.setText("close");
b1.move(100,100);
b2 = new QPushButton(this);
b2 ->setText("ABC");
connect(&b1, &QPushButton::pressed, this, &MainWidget::close);
connect(b2, &QPushButton::released,this, &MainWidget::mySlot);
connect(b2, &QPushButton::released,&b1, &QPushButton::hide);
setWindowTitle("laoda");
b3.setParent(this);
b3.setText("tiehuandaozichuangkou");
b3.move(50,50);
connect(&b3, &QPushButton::released, this,&MainWidget::changeWin);
connect(&w, &SubWidget::mySingnal, this, &MainWidget::dealSub);
resize(400,400);
}
void MainWidget::mySlot()
{
b2->setText("123");
}
void MainWidget::changeWin()
{
w.show();
this->hide();
}
subwidget.cpp
#include "subwidget.h"
SubWidget::SubWidget(QWidget *parent) : QWidget(parent)
{
this->setWindowTitle("xiaodi");
b.setParent(this);
b.setText("QIEHUANDAOZHUCHUANGKOU");
connect(&b, &QPushButton::clicked, this, &SubWidget::sendSlot);
resize(400,400);
}
void SubWidget::sendSlot()
{
emit mySingnal();
}
|