第五十課、關於對話方塊(About)------------------狄泰軟體學院

瑪麗奧ZJY發表於2020-10-08

一、關於對話方塊

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

相關文章