Qt QDialog中的组件 6.10

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的子类。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤独memories

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值