一、关于对话框
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使用桌面环境的系统服