一、关于对话框
1、标准的桌面软件都有一个关于对话框
2、关于对话框用于标识软件的自身信息
(1)、软件的Logo、项目名、版本号
(2)、开发者信息
(3)、版权信息
(4)、联系方式等
3、经典设计方案
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#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 Platform: Qt 4.7.4 Version: 1.0.0 Copyright: 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对象的状态
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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使用桌面环境的系统服