创建按钮的一些操作,
自定义信号和槽,只需自己创建.h和.cpp 返回值都是void
信号只需声明不需要实现 可以有参 可以重载
槽必须声明必须实现,可以有参,可以重载
当槽和信号出现重载,需要利用函数指针明确指向函数地址
char*就不显示双引号 QString会显示,所以我们需要将其转换 .toUtf8()是QByteArray中的函数,可以在帮助菜单中寻找使用方法。
信号连接信号和信号连接槽
断开信号使用下面函数
//断开信号
disconnect(tea,teacherSignal2,stu,studentSlot2);
一个信号可以连接多个槽函数(比如上面,点击按钮可以请吃饭,也可以退出程序)
多个信号也可以连接一个槽函数
信号和槽函数参数类型 必须一一对应(同为无参或有参)
信号和槽函数个数可以不一样,信号参数个数可以多于槽函数。
Lambda表达式
一般都是添加=号(值传递),&使用较少(引用传递) ()参数 {}实现体
mutable修饰值传递变量,可以修改拷贝出的数据,改变不了本体。
改变返回值int ret=[]()->int{ return 100 } ;
;
可以实现在一个连接中加入多个操作
菜单栏创建基础操作 ,菜单栏只有一个
可以创建多个的都是add开头(工具栏,铆接部件),只有一个的是set开头(中心部件,菜单栏)
资源文件的添加 添加图片标志,可以选择绝对路径,也可以先将文件加载到qt中然后使用。1. 将文件加载到qt中需要先在.cpp中在explorer中显示 然后将图片拷贝进去 2.在主文件中创建qt resource类。 3.在资源中添加这些图片
模态与非模态对话框创建
消息对话框 QMessageBox是静态成员函数
其他标准对话框
#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;
}
登录窗口布局
Tree widget的使用
//设置水平头标签:01,QT,对话框,基础,信号,QTreeWidgetItem,ui,QMessageBox,include From: https://blog.51cto.com/u_15525394/6096819
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);