0.绑定同一个槽函数
基类都是QDialog
笔记中都是通过按钮触发对话框
connect(ui->btnFile,&QPushButton::clicked,this,&Widget::dialogShow);
connect(ui->btnColor,&QPushButton::clicked,this,&Widget::dialogShow);
connect(ui->btnFont,&QPushButton::clicked,this,&Widget::dialogShow);
connect(ui->btnMsg,&QPushButton::clicked,this,&Widget::dialogShow);
connect(ui->btnInput,&QPushButton::clicked,this,&Widget::dialogShow);
//五个按钮同时同时绑定一个槽函数,槽函数中判断信号来实现对应功能
通过静态方法强转
为什么要强转:
connect函数的返回值是QObject *类型的,而按钮(对象)是QPushButton *类型的,
一个槽函数就要判断是哪一个按钮触发
通过静态方法强转:
QPushButton *b=static_cast<QPushButton *>(sender());
将QObject * 强转为QPushButton *;
sender();返回当前槽函数信号的触发者对象首地址
1.文件对话框—
#include <QFileDialog>
getOpenFileNames():
QStringList files=QFileDialog::getOpenFileNames(); //默认打开当前项目的bulid目录
QStringList files=QFileDialog::getOpenFileNames(this,"源文件","../;",
"All(*);;源文件(*.c *.cpp);;头文件(*.h)");
arg1:指定父对象 arg2:对话框标题 arg3:工作路径 arg4:筛选过滤文件
getSaveFileName():
保存文件
isEmpty(); 判空
size():求元素个数(大小)<==>lenth();
files.at(i)<==>files[i]
append():在末尾追加数据,自动添加每行的换行符
if(b==ui->btnFile)
{
qDebug()<<"file...";
QStringList files=QFileDialog::getOpenFileNames(this,"源文件","../;",
"All(*);;源文件(*.c *.cpp);;头文件(*.h)");
if(files.isEmpty())
{
qDebug()<<"未选择文件";
return ;
}
qDebug()<<files;
for(int i=0;i<files.size();i++)
ui->textEdit->append(files.at(i));
}
2.消息对话框—
#include <QMessageBox>
warning: 警告消息对话框
QMessageBox::warning(this,"警告","操作错误");
对象 title 显示的信息
warning返回按钮(消息对话框的按钮)编号,标准按钮返回标准编码,自定义按钮返回按钮序号0、1、2....
标准按钮:
QMessageBox::warning(this,"警告","错误警告",QMessageBox::Yes,QMessageBox::No);
自定义按钮:
QMessageBox::warning(this,"警告","错误警告","确定","取消");
critical:
和上面同理;
QMessageBox::critical(this,"错误","操作错误",QMessageBox::Yes , QMessageBox::No);
QMessageBox::critical(this,"错误","操作错误",QMessageBox::Yes | QMessageBox::No);
question:
和上面同理;
information:
和上面同理;
if(b==ui->btnMsg)
{
qDebug()<<"msg...";
QMessageBox::warning(this,"警告","操作错误");
QMessageBox::critical(this,"错误","你滴错误大大滴",QMessageBox::Ok | QMessageBox::No);
int ret=QMessageBox::critical(this,"错误","你在干神魔?","yes","no");
if(ret==0)
{
qDebug() << "yes";
}else if(ret==1){
qDebug()<< "no";
}
}
3.输入对话框—
#include <QInputDialog>
输入:
QInputDialog::getText();
QInputDialog::getText(this,"输入","请输入密码");
arg2:title arg3:提示信息
返回值:输入的文本信息,QString类型,可以用一个text来接受
QString text=QInputDialog::getText(this,"输入","请输入密码");
若要向textEdit文本编辑框追加整型数:
ui->textEdit->append(QString::number(num));
或ui->textEdit->append(QString().arg());
输入的内容打印进textEdit文本编辑框中
if(b==ui->btnInput)
{
qDebug()<<"input...";
QString text=QInputDialog::getText(this,"输入","请输入密码");
if(text.isEmpty())
{
QMessageBox::warning(this,"warning","未输入数据");
}
ui->textEdit->append(text); //textTdit是一个文本编辑框
}
4.颜色对话框—
#include <QColorDialog>
设置颜色:
QColorDialog::getColor();
会打开一个颜色选择的对话框,让用户选择颜色,用户选择了颜色,返回该颜色
颜色设置是否有效:
color.isValid(); //有效返回true,否则faluse
设置文本颜色:
setTextColor();
if(b==ui->btnColor)
{
qDebug()<<"color...";
QColor color = QColorDialog::getColor(Qt::red);
if(color.isValid())
ui->textEdit->setTextColor(color);
}
5.字体对话框—
#include <QFontDialog>
打开字体对话框
QFontDialog::getFont();
用于显示一个字体选择对话框,让用户选择字体样式和大小。
选择后会返回一个Font对象,通过这个对象可以获取该选择的字体属性
bool ok;
QFont font=QFontDialog::getFont(&ok);
弹出对话框来显示字体选择,选择后如果点击了确认,那么ok就为true,反之false
设置字体:
setFont();
ui->textEdit->setFont(font);
if(b==ui->btnFont)
{
qDebug()<<"font...";
bool ok;
QFont font=QFontDialog::getFont(&ok);
if(ok)
{
ui->textEdit->setFont(font); //将文本编辑框选中的字体设置颜色
}
}