• Qt (QFileDialog&QColorDialog&QFontDialog) 对话框实战


    目录

    一、QFileDialog 类 (文件对话框)

    二、QColorDialog 类(颜色对话框)

    三、QFontDialog 类(字体对话框类)


    一、QFileDialog 类 (文件对话框)

    QFileDialog 是 Qt 框架中的一个类,用于在应用程序中提供文件对话框。它允许用户选择文件或目录,并且可以指定对话框的标题、路径、过滤器以及其他选项。

    QFileDialog 类的方法可以使用静态方法调用,因此无需创建对象。该类提供了很多方法,包括:

    • getOpenFileName():获取单个文件的完整路径。
    • getOpenFileNames():获取多个文件的完整路径。
    • getSaveFileName():获取保存文件的完整路径。
    • getExistingDirectory():获取现有目录的路径。

    此外,还提供了一些选项来控制对话框的行为和样式,例如指定默认文件名、显示隐藏文件和目录、添加可选的文件类型过滤器等等。

    QFileDialog 的使用非常简单,只需要调用所需的方法并传递所需的参数和选项即可。可以将返回值用于加载文件或目录路径。

    案例分析:实现下图功能

    代码示例:

    qfiledialogtest.h

    1. #ifndef QFILEDIALOGTEST_H
    2. #define QFILEDIALOGTEST_H
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include // 水平布局
    8. #include // 垂直布局
    9. #include
    10. class QFileDialogTest : public QDialog
    11. {
    12. Q_OBJECT
    13. public:
    14. QFileDialogTest(QWidget *parent = nullptr);
    15. ~QFileDialogTest();
    16. private:
    17. QLabel *FileNameLabel;
    18. QLineEdit *FileNameLineEdit;
    19. QPushButton *FileButton;
    20. QLabel *FileSizeLabel;
    21. QLineEdit *FileSizeLabelLineEdit;
    22. QPushButton *GetFileInfoButton;
    23. private slots:
    24. void GetFileInfoFunc(); // 用于打开文件
    25. void GetFileSizeFunc(); // 用于获取文件大小
    26. };
    27. #endif // QFILEDIALOGTEST_H

    main.cpp

    1. #include "qfiledialogtest.h"
    2. #include
    3. int main(int argc, char *argv[])
    4. {
    5. QApplication a(argc, argv);
    6. QFileDialogTest w;
    7. w.show();
    8. return a.exec();
    9. }

    qfiledialogtest.cpp

    1. #include "qfiledialogtest.h"
    2. QFileDialogTest::QFileDialogTest(QWidget *parent)
    3. : QDialog(parent)
    4. {
    5. setWindowTitle("文件对话框测试");
    6. // 1:创建控件
    7. FileNameLabel=new QLabel("文件名称:");
    8. FileNameLineEdit=new QLineEdit;
    9. FileButton=new QPushButton("选择...");
    10. FileSizeLabel=new QLabel("文件大小:");
    11. FileSizeLabelLineEdit=new QLineEdit;
    12. GetFileInfoButton=new QPushButton("获取文件大小信息");
    13. // 2:排列布局
    14. QGridLayout *glayout=new QGridLayout;
    15. glayout->addWidget(FileNameLabel,0,0);
    16. glayout->addWidget(FileNameLineEdit,0,1);
    17. glayout->addWidget(FileButton,0,2);
    18. glayout->addWidget(FileSizeLabel,1,0);
    19. glayout->addWidget(FileSizeLabelLineEdit,1,1,1,2);
    20. QHBoxLayout *hlayout=new QHBoxLayout;
    21. hlayout->addWidget(GetFileInfoButton);
    22. QVBoxLayout *vlayout=new QVBoxLayout(this);
    23. vlayout->addLayout(glayout);
    24. vlayout->addLayout(hlayout);
    25. // 信号槽函数连接
    26. connect(FileButton,SIGNAL(clicked()),this,SLOT(GetFileInfoFunc()));
    27. connect(GetFileInfoButton,SIGNAL(clicked()),this,SLOT(GetFileSizeFunc()));
    28. }
    29. QFileDialogTest::~QFileDialogTest()
    30. {
    31. }
    32. void QFileDialogTest::GetFileInfoFunc() // 用于打开文件
    33. {
    34. QString strFileName=QFileDialog::getOpenFileName(this,"打开","/","Files(*)");
    35. FileNameLineEdit->setText(strFileName);
    36. }
    37. void QFileDialogTest::GetFileSizeFunc() // 用于获取文件大小
    38. {
    39. // 获取单行编辑框控件里面文件路径等
    40. QString strFileNames=FileNameLineEdit->text();
    41. QFileInfo fileinfo(strFileNames);
    42. qint64 FileSize=fileinfo.size();
    43. FileSizeLabelLineEdit->setText(QString::number(FileSize));
    44. }

    二、QColorDialog 类(颜色对话框)

    QColorDialog 类是一个颜色选择对话框类,用于在 Qt 应用程序中提供用户选择颜色的功能。该类提供了对于颜色选择的控制,包括多种预定义颜色、自定义颜色、调色板、更改颜色模型、透明度等选项。QColorDialog 类继承自 QDialog 类,因此可以像对待普通的对话框一样对待它。

    使用 QColorDialog 类可以创建一个颜色选择对话框并将其显示在屏幕上,用户可以在对话框中选择想要的颜色并将其返回给应用程序。开发人员可以使用 QColorDialog 类的信号和槽机制来处理用户选择的颜色。例如,可以在选择颜色后使用 QColorDialog 类的颜色选择信号来更新另外的部分或部件的颜色。

    QColorDialog 类是 Qt GUI 模块中的一部分,因此必须使用 #include 来包含该类的头文件。

    案例分析:实现下图功能

    代码示例:

    dialog.h

    1. #ifndef DIALOG_H
    2. #define DIALOG_H
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. class Dialog : public QDialog
    9. {
    10. Q_OBJECT
    11. public:
    12. Dialog(QWidget *parent = nullptr);
    13. ~Dialog();
    14. private:
    15. QGridLayout *glayout;
    16. QPushButton *colorbutton;
    17. // QFrame类是基本控件的基类,QWidget是QFrame类型
    18. QFrame *colorFrame;
    19. private slots:
    20. void dispcolorFunc();
    21. };
    22. #endif // DIALOG_H

    dialog.cpp

    1. #include "dialog.h"
    2. Dialog::Dialog(QWidget *parent)
    3. : QDialog(parent)
    4. {
    5. setWindowTitle("颜色对话框测试");
    6. glayout=new QGridLayout(this); // new一个布局对象
    7. colorbutton=new QPushButton("调用颜色对话框");
    8. colorFrame=new QFrame;
    9. colorFrame->setFrameShape(QFrame::Box); // 设置形状
    10. colorFrame->setAutoFillBackground(true); // 填充背景处理
    11. glayout->addWidget(colorbutton,0,0);
    12. glayout->addWidget(colorFrame,1,0);
    13. // 信号槽函数连接
    14. connect(colorbutton,SIGNAL(clicked()),this,SLOT(dispcolorFunc()));
    15. }
    16. Dialog::~Dialog()
    17. {
    18. }
    19. void Dialog::dispcolorFunc()
    20. {
    21. QColor colorvalues=QColorDialog::getColor(Qt::red);
    22. if(colorvalues.isValid())
    23. {
    24. colorFrame->setPalette(QPalette(colorvalues));
    25. }
    26. }

    main.cpp

    1. #include "dialog.h"
    2. #include
    3. int main(int argc, char *argv[])
    4. {
    5. QApplication a(argc, argv);
    6. Dialog w;
    7. w.show();
    8. return a.exec();
    9. }

    三、QFontDialog 类(字体对话框类)

    QFontDialog 类是一个对话框,用于显示可供用户选择的字体。它允许用户选择字体,字体样式(粗体、斜体、下划线)和字体大小。它是 Qt 应用程序中常用的标准 Qt 对话框之一。

    QFontDialog 类继承自 QDialog 类,它提供了一个简单的用户界面,允许用户选择字体。QFontDialog 类有多个静态函数,例如 getFont() 和 getFontInfo(),可以用来创建并显示字体对话框,然后获取用户选择的字体信息。

    使用 QFontDialog 类时,需要注意以下几点:

    1. 需要在应用程序的 .pro 文件中添加 QT += widgets,才能使用 QFontDialog 类。
    2. 可以使用 setFont() 方法将当前字体设置为对话框中的默认选项,也可以使用 setCurrentFont() 方法将当前字体设置为对话框中的选择。
    3. 可以设置 QFontDialog::FontDialogOption 枚举类型变量来控制对话框的行为,例如允许用户选择固定大小字体、隐藏字体样式选项等。
    4. 在用户选择完字体后,可以使用 selectedFont() 方法获取用户选择的字体信息。

    总之,QFontDialog 类是一个便捷的工具,用于允许用户选择他们喜欢的字体,从而提高应用程序的用户体验。

    案例分析:实现下图功能

    代码示例:

    dialog.h

    1. #ifndef DIALOG_H
    2. #define DIALOG_H
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. class Dialog : public QDialog
    9. {
    10. Q_OBJECT
    11. public:
    12. Dialog(QWidget *parent = nullptr);
    13. ~Dialog();
    14. private:
    15. QGridLayout *glayout;
    16. QPushButton *fontbutton;
    17. QLineEdit *fontlineedit;
    18. private slots:
    19. void dispFontFunc();
    20. };
    21. #endif // DIALOG_H

    dialog.cpp

    1. #include "dialog.h"
    2. Dialog::Dialog(QWidget *parent)
    3. : QDialog(parent)
    4. {
    5. setWindowTitle("字体对话框测试");
    6. glayout=new QGridLayout(this);
    7. fontbutton=new QPushButton("调用字体对话框");
    8. fontlineedit=new QLineEdit;
    9. fontlineedit->setText("罗小白的干爹");
    10. glayout->addWidget(fontbutton,0,0);
    11. glayout->addWidget(fontlineedit,0,1);
    12. connect(fontbutton,SIGNAL(clicked()),this,SLOT(dispFontFunc()));
    13. }
    14. Dialog::~Dialog()
    15. {
    16. }
    17. void Dialog::dispFontFunc()
    18. {
    19. bool isbool;
    20. QFont font=QFontDialog::getFont(&isbool);
    21. if(isbool)
    22. {
    23. fontlineedit->setFont(font);
    24. }
    25. }

    main.cpp

    1. #include "dialog.h"
    2. #include
    3. int main(int argc, char *argv[])
    4. {
    5. QApplication a(argc, argv);
    6. Dialog w;
    7. w.show();
    8. return a.exec();
    9. }
  • 相关阅读:
    学成在线_课程查询_前端分页条不显示
    企业电子招投标采购系统——功能模块&功能描述+数字化采购管理 采购招投标
    PBX与VoIP:它们之间有什么区别?
    【设计模式】观察者模式(行为型)⭐⭐⭐
    预训练语言模型复现CPT-1&Restructure_pretrain
    MySQL数据库学习【进阶篇】
    父子进程、僵尸进程和孤儿进程
    uniapp/小程序 onload方法每次打开页面都执行解读
    23、STM32——CAN
    ALV报表学习总结
  • 原文地址:https://blog.csdn.net/m0_74712453/article/details/133849323