day01 上
参考文章:https://blog.csdn.net/qq_41580422/article/details/122770200
onekeybatch
快捷键
//快捷键
//注释 ctrl + /
//运行 ctrl + r
//保存 ctrl + s
//编译 ctrl + b
//查找 ctrl + f
//字体缩放 ctrl+ 鼠标滚轮
//帮助文档 F1
//自动对齐 ctrl + i
//同名之间的.h 和.cpp文件的切换 F4
//函数声明与定义 F2
命名规范
类名:单词首字母大写,单词和单词之间连接,无须连接字符
函数名字 ,变量名:第二个单词首字母大写,单词和单词之间连接,无须连接字符
QT内置的类型,头文件和类命名同名
第一个QT程序
这里直接借鉴大佬做的图
QWidget是Qt中最基本的用户界面类,所有组件都继承自它。
QMainWindow是用于创建应用程序主窗口的类,可以包含菜单栏、工具栏和状态栏等。
QDialog是用于创建对话框的类,用于与用户进行简短交互或显示信息。
pro文件
加QT的模块
QT += core gui
如何查询该类属于哪个模块 (即动态库)
帮助文档 F1
找到类,并点击按F1
兼容以前的版本QT5可以不加
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
版本不一样,不过大概就是这个意思,大佬解释全了
窗口添加按钮
1.先在.h文件中添加 QPushButton变量
class mywidget : public QWidget
{
Q_OBJECT
public:
mywidget(QWidget *parent = nullptr);
~mywidget();
private:
Ui::mywidget *ui;
QPushButton b1;
QPushButton*b2;
};
2.在.cpp文件中mywidget构造函数中添加,
mywidget::mywidget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::mywidget)
{
ui->setupUi(this);
//如果想让窗口在另外一个窗口里面(也就是依附),需要给该窗口指定父窗口
b2=new QPushButton("hello QT",this);
//b2->setText("hello QT");
b2->show();
b1.setText("老二");
b1.setParent(this);
b1.move(100,100);//移动位置 (0,0)就是左上角,向右(x)和向下(y)皆为正
}
回收机制
创建自己的button类
右击添加(add new)
基于什么类派生要想清楚,下面是可以改的
因为父窗口是同一个所以可以不改
下面是一些接口去改进窗口的东西,可按F1查看文档
this->setWindowTitle("你好");//设置窗口标题
this->setFixedSize(200,300);//设置窗口固定
//this->setWindowIcon() 用于设置窗口的图标
标准信号和槽
借鉴大佬的图
如果不懂,这边有代码解释
信号槽(Signals and Slots)是Qt框架中用于实现对象间通信的机制。它允许一个对象(信号发出者)在特定事件发生时发送信号,而其他对象(槽接收者)可以通过连接信号和槽来接收并响应这些信号。
以下是一个简单的信号槽机制的示例:
1.定义一个信号发出者类(Sender Class):
class Sender : public QObject
{
Q_OBJECT
public:
Sender() {}
signals:
void signalA(); // 声明一个信号
public slots:
void slotB() { qDebug() << "Slot B called"; } // 声明一个槽函数
};
2.定义一个信号槽接收者类(Receiver Class):
class Receiver : public QObject
{
Q_OBJECT
public slots:
void slotC() { qDebug() << "Slot C called"; } // 声明一个槽函数
};
3.创建对象并连接信号和槽:
Sender sender;
Receiver receiver;
QObject::connect(&sender, &Sender::signalA, &receiver, &Receiver::slotC);
在上述代码中,我们创建了一个信号发出者对象sender和一个信号槽接收者对象receiver。然后,我们使用QObject::connect函数将信号signalA和槽函数slotC连接起来。
4.发送信号:
emit sender.signalA();
通过emit关键字,我们可以在适当的时候发送信号。一旦信号被发出,与之连接的槽函数将被调用。
信号槽机制的图示如下所示:
+-------------+ +-----------------+
| Sender | | Receiver |
| | | |
| +---------+ | | +-------------+ |
| | | | signalA | | | |
| | | +--------->| | slotC | |
| | | | | | |
| +---------+ | +-------------+ |
+-------------+ +-----------------+
在这个示例中,当sender对象发出signalA信号时,与之连接的receiver对象的slotC槽函数将被调用。
信号槽机制使得对象间的通信更加灵活和解耦,可以方便地实现事件的触发和响应。一个信号可以连接到多个槽函数,一个槽函数也可以连接到多个信号,从而实现复杂的交互逻辑。
实例代码
#include "mywidget.h"
#include "ui_mywidget.h"
mywidget::mywidget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::mywidget)
{
ui->setupUi(this);
//如果想让窗口在另外一个窗口里面(也就是依附),需要给该窗口指定父窗口
this->setWindowTitle("你好");//设置窗口标题
this->setFixedSize(200,300);//设置窗口固定
//this->setWindowIcon() 用于设置窗口的图标
b2=new QPushButton("hello QT",this);
//b2->setText("hello QT");
b2->show();
b1.setText("老二");
b1.setParent(this);
b1.move(100,100);//移动位置 (0,0)就是左上角,向右(x)和向下(y)皆为正
Mybutton *btn =new Mybutton(this);
btn->move(200,0);
//需求 按b1关闭窗口
//connect(b1,发出的信号,this,处理信号的槽函数);
connect(&b1,&QPushButton::clicked,this,&mywidget::close);
/*
b1:信号发出者,此参数是一个指针
&Qpushbutton::clicked 信号发出者,内部的一个信号
格式: &+信号发出者类的名字+::信号的名字
this:信号接收者,此参数是一个指针
&mywidget::close:信号的处理函数,属于this
*/
}
mywidget::~mywidget()
{
delete ui;
}
标签:窗口,QT,day01,b2,b1,信号,mywidget
From: https://www.cnblogs.com/yjydxuexi/p/17609604.html