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

一、关于对话框

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

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对象的状态

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使用桌面环境的系统服

原文地址:https://www.cnblogs.com/gui-lin/p/6425391.html