创建按钮的一些操作,
![QT基础01 QT基础01](https://image.shishitao.com:8440/aHR0cHM6Ly9zMi41MWN0by5jb20vaW1hZ2VzLzIwMjMwMy9jNzNhNzY2MzIwMzUxNmQ1MDM1MTA1ZjQ5MmM1MWRmNDkzMzZmNi5wbmc%3D.png?w=700&webp=1)
自定义信号和槽,只需自己创建.h和.cpp 返回值都是void
信号只需声明不需要实现 可以有参 可以重载
槽必须声明必须实现,可以有参,可以重载
当槽和信号出现重载,需要利用函数指针明确指向函数地址
![QT基础01 QT基础01](https://image.shishitao.com:8440/aHR0cHM6Ly9zMi41MWN0by5jb20vaW1hZ2VzLzIwMjMwMy85OWY0ZWJmMDI0Yjc4NzJhMzEwMzgzOTFhNzVmZjIyYzY0M2YzZC5wbmc%3D.png?w=700&webp=1)
char*就不显示双引号 QString会显示,所以我们需要将其转换 .toUtf8()是QByteArray中的函数,可以在帮助菜单中寻找使用方法。
![QT基础01 QT基础01](https://image.shishitao.com:8440/aHR0cHM6Ly9zMi41MWN0by5jb20vaW1hZ2VzLzIwMjMwMy8wNTE1ZWVmNDRjNjU3OWRmMWNlOTI0NDFjMjM5Nzk1NzQwNjc3OS5wbmc%3D.png?w=700&webp=1)
信号连接信号和信号连接槽
![QT基础01 QT基础01](https://image.shishitao.com:8440/aHR0cHM6Ly9zMi41MWN0by5jb20vaW1hZ2VzLzIwMjMwMy9iNmYyMWVjNzcwMWZmZmExYzE2MTg5NzQwZTJjOTY4NmMxMDRiMi5wbmc%3D.png?w=700&webp=1)
断开信号使用下面函数
//断开信号
disconnect(tea,teacherSignal2,stu,studentSlot2);
一个信号可以连接多个槽函数(比如上面,点击按钮可以请吃饭,也可以退出程序)
多个信号也可以连接一个槽函数
信号和槽函数参数类型 必须一一对应(同为无参或有参)
信号和槽函数个数可以不一样,信号参数个数可以多于槽函数。
Lambda表达式
![QT基础01 QT基础01](https://image.shishitao.com:8440/aHR0cHM6Ly9zMi41MWN0by5jb20vaW1hZ2VzLzIwMjMwMy9kMzllN2I3OTU4MGQ1ZWI5ZDliNTU4NmRlYWQ0NGJmYzZhZjczYy5wbmc%3D.png?w=700&webp=1)
一般都是添加=号(值传递),&使用较少(引用传递) ()参数 {}实现体
mutable修饰值传递变量,可以修改拷贝出的数据,改变不了本体。
改变返回值int ret=[]()->int{ return 100 } ;
;
可以实现在一个连接中加入多个操作
![QT基础01 QT基础01](https://image.shishitao.com:8440/aHR0cHM6Ly9zMi41MWN0by5jb20vaW1hZ2VzLzIwMjMwMy8yOWIwMzdlNDNmNjBhMTljZWMxMDU2NmZlOTVmNmQ2ZjIxMTI0YS5wbmc%3D.png?w=700&webp=1)
菜单栏创建基础操作 ,菜单栏只有一个
可以创建多个的都是add开头(工具栏,铆接部件),只有一个的是set开头(中心部件,菜单栏)
![QT基础01 QT基础01](https://image.shishitao.com:8440/aHR0cHM6Ly9zMi41MWN0by5jb20vaW1hZ2VzLzIwMjMwMy82NzM4NTU1ODA4YjNiMWYwNjI3NzUzODdiMGZmYjE3YjU4YTY2OS5wbmc%3D.png?w=700&webp=1)
![QT基础01 QT基础01](https://image.shishitao.com:8440/aHR0cHM6Ly9zMi41MWN0by5jb20vaW1hZ2VzLzIwMjMwMy9hMzgxMTQ4NjJlM2E3MmUyMmUzODI0NDE5MjVhNTllNjZhOGMzZS5wbmc%3D.png?w=700&webp=1)
资源文件的添加 添加图片标志,可以选择绝对路径,也可以先将文件加载到qt中然后使用。1. 将文件加载到qt中需要先在.cpp中在explorer中显示 然后将图片拷贝进去 2.在主文件中创建qt resource类。 3.在资源中添加这些图片
![QT基础01 QT基础01](https://image.shishitao.com:8440/aHR0cHM6Ly9zMi41MWN0by5jb20vaW1hZ2VzLzIwMjMwMy9kNTIzNzcwNDZjNDcyODAyNmEyMzE2NTMwMGUyNTdjM2JmZTc3OS5wbmc%3D.png?w=700&webp=1)
模态与非模态对话框创建
![QT基础01 QT基础01](https://image.shishitao.com:8440/aHR0cHM6Ly9zMi41MWN0by5jb20vaW1hZ2VzLzIwMjMwMy8yNzhlMGU4MzZlYzNiYzE2MmNmODI5YWU0ZWVlMjQ5NTllYTI4Yi5wbmc%3D.png?w=700&webp=1)
消息对话框 QMessageBox是静态成员函数
![QT基础01 QT基础01](https://image.shishitao.com:8440/aHR0cHM6Ly9zMi41MWN0by5jb20vaW1hZ2VzLzIwMjMwMy9hM2Q3MDYxNjhjNWY1ZDE1NTc2ODczNDAwOTQxZGE5MWQzYjViNC5wbmc%3D.png?w=700&webp=1)
其他标准对话框
![QT基础01 QT基础01](https://image.shishitao.com:8440/aHR0cHM6Ly9zMi41MWN0by5jb20vaW1hZ2VzLzIwMjMwMy82MTM3Y2Q1OThhZTU0NjViZWYzNDIyZTdmMGFkMzdjNmQ1YzA1NS5wbmc%3D.png?w=700&webp=1)
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDialog>
#include <QDebug>
#include <QMessageBox>
#include <QColorDialog>
#include <QFileDialog>
#include <QFontDialog>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
resize(1200,800);
// setFixedSize(1200,800);
//点击新建按钮,弹出对话框
connect(ui->actionnew,&QAction::triggered,[=](){
//对话框分为模态对话框(不可以对其他窗口进行操作) ,非模态对话框(可以对其他窗口进行操作)
//模态创建
// QDialog dlg(this);
// dlg.resize(600,400);
// dlg.exec();
// qDebug()<<"模态对话框弹出了";
//非模态创建
// QDialog * dlg2=new QDialog(this);
// dlg2->resize(600,400);
// dlg2->show();
// dlg2->setAttribute(Qt::WA_DeleteOnClose);//55号属性 每点完一次删除一次 防止内存泄露
// qDebug()<<"非模态对话框弹出";
//消息对话框
//错误对话框
// QMessageBox::critical(this,"critical","错误");
//信息对话框
// QMessageBox::information(this,"info","信息");
//提问对话框
//参数1 父亲 参数2 标题 参数3 提示内容 参数4 案件类型 参数5 默认关联回车案按键
// if(QMessageBox::Save == QMessageBox::question(this,"ques","提问",QMessageBox::Save |QMessageBox::Cancel,QMessageBox::Cancel))
// {
// qDebug()<<"保存";
// }
// else
// {
// qDebug()<<"取消";
// }
//waring对话框
//其他标准对话框
//颜色对话框
// QColor color=QColorDialog::getColor(QColor(255,0,0));
// qDebug()<<"r= "<<color.red()<<"g="<<color.green()<<"b="<<color.blue();
//文件对话框 参数1 父亲 参数2 标题 参数3 默认打开路径 参数4 过滤文件格式
// QString str=QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\子文\\Desktop","(*.txt)");
// qDebug() << str;
//字体对话框
bool flag;
QFontDialog::getFont(&flag,QFont("华文彩云",36));
});
}
MainWindow::~MainWindow()
{
delete ui;
}
登录窗口布局
![QT基础01 QT基础01](https://image.shishitao.com:8440/aHR0cHM6Ly9zMi41MWN0by5jb20vaW1hZ2VzLzIwMjMwMy8xN2ZkNDZhODZjNDRhMjRhN2VhNDE3MDE3MjdmMzMwZjdmZjIyNy5wbmc%3D.png?w=700&webp=1)
![QT基础01 QT基础01](https://image.shishitao.com:8440/aHR0cHM6Ly9zMi41MWN0by5jb20vaW1hZ2VzLzIwMjMwMy8xNDk1YWE1NjVhOWM5M2I2MjNiODY0YTdkZmQxYzg5MzVkZDNiZS5wbmc%3D.png?w=700&webp=1)
Tree widget的使用
![QT基础01 QT基础01](https://image.shishitao.com:8440/aHR0cHM6Ly9zMi41MWN0by5jb20vaW1hZ2VzLzIwMjMwMy81NWEzYzhkNDQyY2NjNTVmZDYzMzE1NjU2Njg5NDY0ZjY0ODRlMi5wbmc%3D.png?w=700&webp=1)
//设置水平头
ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介绍");
QTreeWidgetItem *litem=new QTreeWidgetItem(QStringList()<<"力量");
QTreeWidgetItem *mintem=new QTreeWidgetItem(QStringList()<<"敏捷");
QTreeWidgetItem *zhitem=new QTreeWidgetItem(QStringList()<<"智慧");
//加载顶点节点
ui->treeWidget->addTopLevelItem(litem);
ui->treeWidget->addTopLevelItem(mintem);
ui->treeWidget->addTopLevelItem(zhitem);
//追加子节点
QStringList heroL1;
heroL1<<"小火龙"<<"可以使用喷火和撞击";
QTreeWidgetItem *l1=new QTreeWidgetItem(heroL1);
litem->addChild(l1);