Dialog对话框窗体
打开对话框窗口一般都是QxxxDialog::想要做的事
QFileDialog:
QFileDialog组件是Qt框架中的一个对话框组件,用于打开和保存文件。它提供了一个用户友好的界面,允许用户选择文件或目录,并提供了一些常用的文件过滤器,例如文本文件、图像文件、音频文件等。QFileDialog组件还可以设置默认的文件名、文件类型、文件路径等属性,以及自定义文件过滤器和文件对话框的标题。它是一个非常常用的组件,可以方便地实现文件的打开和保存功能。
设置一个按钮名为openfile,点击按钮即可打开filedialog对话框
connect(btnOpenfile,SIGNAL(click(bool),this,SLOT(btnOpenfile_slots())));
void Widget::btnOpenfile_slots()
{
//获取想要打开的文件名
//父类,设置对话框名,路径(设置成影子路径),过滤项,
QString filename = QFileDialog::getOpenFileName(this,"file",QDir::currentPath(),"C++ Source Files(*.cpp *.c);;C++ Header Files(*.h);;Text Files(*.txt)");
if(filename.isEmpty())
return ;
qDebug() << filename;
}
QMessageBox:
QMessageBox是Qt框架中的一个组件,用于显示消息框。它可以用于显示不同类型的消息,例如警告、错误、信息等。QMessageBox通常用于向用户提供反馈或提示信息,以便用户可以采取适当的行动。它还可以包含按钮,以便用户可以选择不同的选项。QMessageBox是一个非常常用的组件,可以在Qt应用程序中轻松地使用。
消息提示:QMessageBox::information(this,"info","you are studying Qt");//父类,对话框名称,提示出的信息
警告提示:QMessageBox::warning(this,"question","you wen ti?");//父类,对话框名称,提示出的信息
/*
QMessageBox::information(this,"info","you are studying Qt");
QMessageBox::question(this,"question","you wen ti?");
QMessageBox::warning(this,"question","you wen ti?");
QMessageBox::about(this,"question","you wen ti?");
QMessageBox::aboutQt(this,"Qt");
*/
QInputDialog:
QInputDialog是Qt框架中的一个组件,用于创建一个简单的对话框,用于从用户那里获取输入。它提供了一些常见的输入类型,例如字符串、整数、浮点数、列表等。QInputDialog组件可以方便地集成到Qt应用程序中,使得用户能够轻松地输入数据
QInputDialog::getText(this,"name","input name");
next
QInputDialog::getInt(this,"int","plz input ur number");
QColorDialog:
QColorDialog是Qt框架中的一个组件,用于显示颜色选择对话框。它允许用户从预定义的颜色集合中选择颜色,或者通过调整RGB或HSV值来自定义颜色。QColorDialog通常用于需要用户选择颜色的应用程序中,例如图形编辑器或绘图工具。在Qt中,可以通过调用QColorDialog::getColor()方法来显示颜色选择对话框,并获取用户选择的颜色。
设置一个名为Get color的按钮,点击按钮之后即可打开ColorDialog对话框,选择颜色将选择的颜色放到frame矩形框架中,frame原来的颜色为黄色
frame->setAutoFillBackground(true);
frame->setPalette(QPalette(Qt::yellow));
connect(btnGetColor,SIGNAL(click(bool),this,SLOT(colorDialog_slots())));
void Widget::colorDialog_slots()
{
//打开颜色对话框,并获取到选择的颜色
QColor color = QColorDialog::getColor(Qt:;red,this,"get color");//颜色,父类,对话框标题;
qDebug() << color.red();//r分量
qDebug() << color.green();//g分量
qDebug() << color.blue();//u分量
frame->setPalette(QPalette(color));
}
QFontDialog:
QFontDialog组件是Qt框架中的一个对话框组件,用于让用户选择字体和字号。它提供了一个用户友好的界面,允许用户浏览和选择系统中可用的字体,还可以设置字体的样式、粗细、斜体等属性。QFontDialog组件通常用于需要让用户选择字体的应用程序中,例如文本编辑器、字处理软件等。
设置一个lineEdit的组件上面输入文字,设计一个按钮btnFontSelect,打开字体对话框,选择字体后改变lineEdit上面的字体
connect(btnFontSelect,SIGNAL(click(bool)),this,SLOT(FontSelect_slots()));
void Widget::FontSelect_slots()
{
bool ok;//一个bool类型的指针,用于返回用户是否点击了对话框中的“确定”按钮
QFont font = QFontDialog::getFont(&ok,QFont("Arial"),this,"Get Font");
//bool类型指针,默认字体,父类,对话框标题名
lineEdit->setFont(font);
}
显示自定义的MyDialog界面
在Widget上定义一个按钮btnMyDialog,用来显示我自己设计的对话框,在dialog中设计确认和取消按钮,并且点击后分别返回数据给Widget
1.在原widget的基础上添加新文件Dialog
2.设计好Dialog对话框之后设计按钮和触发的信号与槽函数
dialog界面
void Dialog::on_btn_certain_slots()
{
this->accept();//在Qt中,QDialog是QWidget的子类,因此QDialog继承了QWidget的所有成员函数。但是,QDialog还有一些额外的成员函数,其中包括accept()和reject()。QWidget中的accept()函数是一个虚函数,用于接受并处理用户的输入事件。当用户执行某些操作(例如按下“确定”按钮)时,QWidget会调用accept()函数来通知应用程序,用户已经完成了操作。而QDialog中的accept()函数是一个非虚函数,它继承自QDialog的父类QDialogButtonBox。这个函数的作用是关闭对话框,并将结果设置为Accepted。在QDialog中,当用户按下“确定”按钮时,QDialog会自动调用accept()函数来关闭对话框并返回Accepted结果。因此,QWidget中的accept()函数是用于处理用户输入事件的虚函数,而QDialog中的accept()函数是用于关闭对话框并返回Accepted结果的非虚函数。
//这个函数会使得exec()函数关闭并返回1
}
void Dialog::on_btn_cancel_slots()
{
this->reject();//这个函数会使得exec()函数关闭并返回0
}
widget界面
connect(btnMyDialog,SIGNAL(click(bool)),this,SLOT(MyDialog_slots()));
void MyDialog_slots()
{
Dialog *d = new Dialog(this);
if(d->exec() == Dialog::accept())
{
qDebug() << "accept"
}
else
{
qDebug() << "reject"
}
}
在Qt中为什么QDialog中有exec()而QWidget中没有exec()
QDialog是QWidget的子类,它们都继承自QWindow。
但是QDialog是一个模态对话框,它会阻塞程序的执行,直到用户关闭对话框。
因此,QDialog需要一个exec()函数来启动一个事件循环,等待用户的响应。而QWidget不是模态对话框,它不需要阻塞程序的执行,因此没有exec()函数。
QWidget通常用于构建应用程序的主窗口或其他非模态窗口。如果需要在QWidget中实现模态对话框的功能,可以使用QDialog或者自定义一个继承自QDialog的子类。