第五十课、关于对话框(About)------------------狄泰软件学院

    科技2025-11-14  10

    一、关于对话框

    1、标准的桌面软件都有一个关于对话框

    2、关于对话框用于标识软件的自身信息

    (1)、软件的Logo、项目名、版本号

    (2)、开发者信息

    (3)、版权信息

    (4)、联系方式等

    3、经典设计方案

     关于对话框头文件

    #ifndef ABOUTDIALOG_H #define ABOUTDIALOG_H #include <QWidget> #include <QLabel> #include <QPlainTextEdit> #include <QPushButton> #include <QDialog> class AboutDialog : public QDialog { Q_OBJECT protected: QLabel m_label; QPushButton m_closeButton; QPlainTextEdit m_plainTextEdit; public: explicit AboutDialog(QWidget *parent = 0); }; #endif // ABOUTDIALOG_H 关于对话框头文件

     关于对话框实现文件

    #include "AboutDialog.h" #include <QPalette> AboutDialog::AboutDialog(QWidget *parent) : QDialog(parent), m_label(this), m_closeButton(this), m_plainTextEdit(this) { QPixmap pm(":/Res/pic/Logo.PNG"); pm = pm.scaled(120, 120, Qt::KeepAspectRatio); m_label.setPixmap(pm); m_label.move(20, 20); m_label.resize(120, 120); QPalette p = m_plainTextEdit.palette(); p.setColor(QPalette::Active, QPalette::Base, palette().color(QPalette::Active, QPalette::Background)); p.setColor(QPalette::Inactive, QPalette::Base, palette().color(QPalette::Inactive, QPalette::Background)); m_plainTextEdit.move(200, 30); m_plainTextEdit.resize(180, 130); m_plainTextEdit.setPalette(p); m_plainTextEdit.setFrameStyle(QFrame::NoFrame); m_plainTextEdit.setReadOnly(true); m_plainTextEdit.insertPlainText("NotePad Project\n\nPlatform: Qt 4.7.4\n\nVersion: 1.0.0\n\nCopyright: LGC"); m_closeButton.setText("Close"); m_closeButton.move(273, 175); m_closeButton.resize(100, 30); setFixedSize(390, 230); setWindowTitle("About NotePad"); connect(&m_closeButton, SIGNAL(clicked()), this, SLOT(close())); } 关于对话框实现文件

    其它修改的地方:

     二、项目持续开发

    1、开发目标

    (1)、自定义文本编译器的字体和大小

    (2)、设置文本框是否自动换行

    (3)、打开外部帮助文档

    2、自定义字体大小及实现思路

    (1)、通过QFontDialog对话框设置字体以及大小

    (2)、将QFontDialog设置到文本编辑器

     

    3、自动换行实现思路

    (1)、获取当前文本编辑器的换行模式

    (2)、将模式进行反转后并进行设置

    (3)、更新对QAction对象的状态

     自动换行的实现 

    void MainWindow::onFormatWrap() { QPlainTextEdit::LineWrapMode mode = mainEdit.lineWrapMode(); if( mode == QPlainTextEdit::NoWrap )//如果不是自动换行 { mainEdit.setLineWrapMode(QPlainTextEdit::WidgetWidth);//就反转为自动换行 //findMenuBarAction("换行")->setChecked(true);//还是不能工作,此问题尚未解决 findToolBarAction("换行")->setChecked(true); } else { mainEdit.setLineWrapMode(QPlainTextEdit::NoWrap); // findMenuBarAction("换行")->setChecked(false); findToolBarAction("换行")->setChecked(false); } } 自动换行的实现

    4、打开外部文件实现思路

    (1)、QDesktopServers提供了一系列桌面开发相关的服务接口

    (2)、通过QDesktopServers中的成员函数打开帮助文档

    A、QDesktopServers::openUrl(QUrl("path"))

    三、小结

    (1)、关于对话框用于标识软件自身的信息

    (2)、使用QFontDialog设置文本编辑器的字体

    (3)、设置文本编辑器的自动换行属性

    (4)、通过QDesktopServers使用桌面环境的系统服

    Processed: 0.009, SQL: 8