天天看點

Qt-模态和非模态對話框

菜單欄建立一個選項 new -> actionnew(編譯器給的名字)

Qt-模态和非模态對話框

代碼 完成 點選建立彈出對話框

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug.h"
#include "QDialog"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //點選建立按鈕 彈出一個對話框
    connect(ui->actionnew,&QAction::triggered,this,[=](){
      QDialog dlg(this);
      //建立模态對話框
     // dlg.resize(200,100);
     // dlg.exec();

      //非模态對話框 必須在堆上申請記憶體,非模态對話框為非阻塞狀态.
      //代碼會接着往下執行 棧上的局部變量會失去作用.
    QDialog* dlg2=new QDialog(this);
    dlg2->resize(200,100);

    //設定屬性  當點選非模态對話框關閉按鈕時,銷毀對象記憶體.
    //如果不設定這個值 使用者點選關閉後再點建立會一直在堆上建立記憶體,就會發生記憶體洩漏
    dlg2->setAttribute(Qt::WA_DeleteOnClose);
    dlg2->show();


    });

}
           

标準對話框

QColorDialog :選擇顔色

QFileDialog :選擇檔案或者目錄

QFontDialog :選擇字型

QInputDialog :允許使用者輸入一個值,并将其值傳回

QMessageBox :子產品對話框,用于顯示資訊,詢問問題等

QPageSetupDialog :為列印機提供紙張相關的選項

QPrintDialog :列印機配置

QPrintPreiewDialog :列印預覽

QProgressDialog :顯示操作過程

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug.h"
#include "QDialog"
#include "QMessageBox"
#include "qcolordialog.h"
#include "QFileDialog"
#include "QFontDialog"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //點選建立按鈕 彈出一個對話框
    connect(ui->actionnew,&QAction::triggered,this,[=](){

    //顔色對話框  通過顔色對話框獲得選擇的顔色
//    QColor color=QColorDialog::getColor(QColor(255,0,0));
//    qDebug()<<"r="<<color.red();
//

   //檔案對話框
//   QString fileName= QFileDialog::getOpenFileName(this,      //父視窗
//                                 "打開檔案",  //對話框标題
//                                 "./",       //預設打開的目錄
//                                 "(*.txt)"   //過濾檔案類型
//                                 );
//   //QString類型要轉換成char* 來判斷
//   if(strcmp(fileName.toUtf8().data(),"")!=0)
//   {
//        qDebug()<<"打開的檔案名是:"<<fileName;
//   }
//   else
//   {
//        qDebug()<<"點選了取消";
//   }

        //字型對話框
      bool flag;
      QFont font=QFontDialog::getFont(
                  &flag,
                  QFont("黑體",36)//預設打開屬性 預設 選中黑體
                  );
      qDebug()<<"字型:"<<font.family();

 });
}
           
Qt

繼續閱讀