• 第五十课、关于对话框(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使用桌面环境的系统服

  • 相关阅读:
    从scanf的学习接口设计
    特现C语言编程特点的小代码,itoa,数值转换成字符串
    So many good projects for studying C programming lanuage.
    重要算法代码
    选择一本C++教材
    4412 内核模块传参数
    4412 GPIO初始化
    4412 物理地址
    4412 杂项设备
    4412 Linux设备总线
  • 原文地址:https://www.cnblogs.com/gui-lin/p/6425391.html
Copyright © 2020-2023  润新知