80Qt窗口_對話框

目錄

5. 對話框

5.1 對話框介紹

用例1:

用例2:

用例3:

用例4:

5.2 對話框的分類

5.2.1 模態對話框

5.2.2 ?模態對話框


5. 對話框

5.1 對話框介紹

對話框是 GUI 程序中不可或缺的組成部分。?些不適合在主窗?實現的功能組件可以設置在對話框 中。對話框通常是?個頂層窗?,出現在程序最上層,?于實現短期任務或者簡潔的??交互。Qt常 ?的內置對話框有:QFiledialog(?件對話框)、QColorDialog(顏?對話框)、QFontDialog (字體對話框)、QInputDialog (輸?對話框)和 QMessageBox(消息框) 。

用例1:

直接運行

用例2:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDialog>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{QDialog* dialog = new QDialog(this);dialog->setWindowTitle("對話框的標題");// 設置對話框的尺寸dialog->resize(400, 300);// 通過 show 方法就可以顯示出對話框.dialog->show();// delete dialog;// 正確做法應該是把 delete 和關閉按鈕的點擊信號關聯起來.// 在用戶點擊關閉的時候, 觸發 delete.// Qt 為了讓咱們寫的方便, 直接給 QDialog 設置了一個屬性, 可以通過設置屬性, 完成上述效果.dialog->setAttribute(Qt::WA_DeleteOnClose);
}

要是這樣寫,一點擊對話框就會閃退,因為在函數內創建對話框又刪除對話框

用例3:

dialog.h
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "dialog.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{Dialog* dialog = new Dialog(this);dialog->setWindowTitle("自定義對話框");dialog->resize(400, 300);dialog->setAttribute(Qt::WA_DeleteOnClose);dialog->show();
}

dialog.cpp

#include "dialog.h"
#include <QPushButton>
#include <QLabel>
#include <QVBoxLayout>Dialog::Dialog(QWidget* parent) : QDialog(parent)
{// 創建出一些控件, 加入到 Dialog 中. (以 Dialog 作為父窗口)QVBoxLayout* layout = new QVBoxLayout();this->setLayout(layout);QLabel* label = new QLabel("這是一個對話框", this);QPushButton* button = new QPushButton("關閉", this);layout->addWidget(label);layout->addWidget(button);connect(button, &QPushButton::clicked, this, &Dialog::handle);
}void Dialog::handle()
{this->close();
}

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "dialog.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{Dialog* dialog = new Dialog(this);dialog->setWindowTitle("自定義對話框");dialog->resize(400, 300);dialog->setAttribute(Qt::WA_DeleteOnClose);dialog->show();
}

用例4:

創建窗口項目

mianwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "dialog.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{// 彈出一個自定義的對話框了Dialog* dialog = new Dialog(this);dialog->setAttribute(Qt::WA_DeleteOnClose);// dialog->show();dialog->exec();
}

5.2 對話框的分類

對話框分為 模態對話框 和 ?模態對話框。
?

5.2.1 模態對話框

模態對話框指的是:顯?后?法與?窗?進?交互,是?種阻塞式的對話框。使? QDialog::exec() 函 數 調?。
模態對話框適?于必須依賴??選擇的場合,?如消息顯?,?件選擇,打印設置等。
?例:
1、新建 Qt 項?,在 ui ?件中的菜單欄中設置兩個菜單:"?件" 和 "編輯",在 菜單 "?件" 下新建
菜單項:"創建" 并將菜單項 "新建" 置于?具欄中 ; 如下圖?
2、在 mainwindow.cpp ?件中實現:當點擊 "新建" 時,彈出?個模態對話框;
說明:在菜單項中,點擊菜單項時就會觸發 triggered() 信號

5.2.2 ?模態對話框

?模態對話框顯?后獨?存在,可以同時與?窗?進?交互,是?種?阻塞式對話框,使?
QDialog::show()函數調?。
?模態對話框?般在堆上創建,這是因為如果創建在棧上時,彈出的?模態對話框就會?閃?過。同 時還需要設置 Qt:WA_DeleteOnClose 屬性,?的是:當創建多個?模態對話框時(如打開了多個? 模態窗?),為了避免內存泄漏要設置此屬性。
?模態對話框適?于特殊功能設置的場合,?如查找操作,屬性設置等。
?例:
5.2.3 混合屬性對話框
混合屬性對話框同時具有模態對話框和?模態對話框的屬性,對話框的?成和銷毀具有?模態對話框 屬性,功能上具有模態對話框的屬性。
使? QDialog::setModal() 函數 可以創建混合特性的對話框。通常,創建對話框時需要指定對話框的 ?組件。
?例:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/85200.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/85200.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/85200.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Pyenv 跟 Conda 還有 Poetry 有什么區別?各有什么不同?

pyenv、Conda 和 Poetry 是 Python 生態中常用的工具&#xff0c;但它們的核心功能和用途不同&#xff0c;通常可以結合使用。以下是它們的區別和特點&#xff1a; 1. pyenv 用途&#xff1a;管理多個 Python 解釋器版本。 核心功能&#xff1a; 安裝不同版本的 Python&#x…

數學符號和標識中英文列表(含義與示例)

數學符號和標識的參考&#xff0c;涵蓋了數學的各個主要分支&#xff0c;并提供清晰的定義和示例&#xff0c;方便快速查找和學習收藏。 目錄 基礎數學符號幾何符號代數符號線性代數符號概率與統計符號集合論符號邏輯符號微積分與分析符號數字與字母符號 特點 中英對照&…

「Java流程控制」switch結構

知識點解析 1.switch結構的核心概念 switch語句是一種多分支選擇結構,它根據表達式的值來選擇執行不同的代碼塊。與if-else結構相比,switch更適合處理離散的、有限個值的比較。 2.switch結構的基本語法 switch (表達式) {case 值1:// 代碼塊1[break;]case 值2:// 代碼塊…

從0開始學習R語言--Day27--空間自相關

有的時候&#xff0c;我們在數據進行分組時&#xff0c;會發現用正常的聚類分析的方法和思維&#xff0c;分組的情況不是很理想。其實這是因為我們常常會忽略一個問題&#xff1a;假設我們正在分析的數據是真實的&#xff0c;那么它也肯定在一定程度上符合客觀規律。而如果我們…

Excel將表格文件由寬數據轉為長數據的方法

本文介紹基于Excel軟件的Power Query模塊&#xff0c;實現表格數據由寬數據轉為長數據的具體方法。 長數據和寬數據是數據分析中的2種基本數據組織形式&#xff0c;二者在結構、用途、適用場景等方面各有特點。其中&#xff0c;寬數據 &#xff08;Wide Format&#xff09;以“…

SpringAI + DeepSeek大模型應用開發 - 入門篇

三、SpringAI Spring AILangChain4jChat支持支持Function支持支持RAG支持支持對話模型1515向量模型1015向量數據庫1520多模態模型51JDK178 1. 對話機器人 1.1 快速入門 步驟①&#xff1a;引入依賴&#xff08;先去掉openai的starter依賴&#xff0c;因為要配置API_KEY&#…

ROS docker使用顯卡驅動rviz gazebo,以及接入外設和雷達

ROS docker使用顯卡驅動rviz gazebo&#xff0c;以及接入外設和雷達 由于我的電腦裝ubuntu22.04系統&#xff0c;想使用ros noetic開發&#xff0c;使用魚香ros一鍵安裝docker安裝。但是啟動dockek中rviz無法使用顯卡驅動&#xff0c;usb相機端口不顯示&#xff0c;網口雷達無…

ruoyi后端框架的mapper層復雜字段數據獲取問題

背景。如下是復雜字段。需要在mapper.java類注解中聲明autoResultMap true才會進行處理。前提是&#xff0c;創建后端程序代碼沒有添加mapp.xml文件。故用注解簡化代替。

產品推薦|一款具有單光子級探測能力的科學相機千眼狼Gloria 1605

在生命科學超分辨率成像、量子物理單光子探測、交叉領域單分子追蹤等應用場景中&#xff0c;具有單光子級探測能力的科學相機是科學實驗的關鍵設備。 千眼狼Gloria 1605采用16μm16μm大像元尺寸設計&#xff0c;基于Gpixel科學級背照式CMOS芯片&#xff0c;集成千眼狼底層圖像…

JS.Day2-堆選(Py)/三路快排-快速選擇-215,11,560,21,128,20,121

目錄 215.找第k大元素 三路的快速排序 快速選擇 法2.堆選 &#xff08;堆排序&#xff09; 11.盛更多水的容器 代碼1 代碼2 560.和為K的子數組&#xff08;題意&#xff01;&#xff09; 慣性思維 正解 21.合并生序鏈表 遞歸寫法 128.最長連續序列 20.有效的括號…

第8章 處理幾何圖形 面向 ArcGIS的Python腳本編程

一、折點坐標(.txt 或 .xlsx 或 .xls) > 點線面圖層(.shp) &#xff08;一&#xff09;.xlsx 或 .xls > .shp 新建一個文件夾&#xff0c;連接到該文件夾&#xff0c;并將其設置為工作空間 在該文件夾下&#xff0c;新建一個pts.xlsx的文件&#xff0c;并輸入下圖內容 …

使用(h3.js)繪制六角網格碼

今天來記錄一篇關于h3.js插件庫的使用&#xff0c;他可以很高效的計算出地球上某個經緯度坐標六邊形頂點。 前段時間領導突然給我個售前功能&#xff0c;要求是使用h3.js插件在地球上繪制出六邊形網格碼&#xff0c;本來以為挺棘手的&#xff0c;結果看完文檔后發現也挺簡單的…

GO 1.25

Go 1.25 發布說明&#xff08;草案&#xff09; Go 1.25 尚未發布。 本文檔是正在編寫中的發布說明。Go 1.25 預計于 2025 年 8 月發布。 語言變更 Go 1.25 中沒有影響 Go 程序的語法變更。然而&#xff0c;在語言規范中&#xff0c;“核心類型”&#xff08;core types&…

解析Android SETUP_DATA_CALL 鏈路信息字段

Android 對象返回的log信息經常都不是標準的JSON字符串,排查字段不直觀,比如下面的日志: 06-13 15:56:36.204 8076 8407 D RILJ : [1655]> SETUP_DATA_CALL,reason=NORMAL,accessNetworkType=EUTRAN,dataProfile=[DataProfile=[ApnSetting] IMS, 2318, 310260, ims,…

跨語言RPC:使用Java客戶端調用Go服務端的HTTP-RPC服務

在構建分布式系統時&#xff0c;實現不同編程語言之間的無縫通信是一個常見的需求。本文將詳細介紹如何使用Go語言創建一個HTTP-RPC服務&#xff0c;并通過Java客戶端進行遠程調用。我們將探索整個過程&#xff0c;包括服務端的實現、客戶端的編寫以及測試驗證。 一、背景介紹…

CVPR2024遷移學習《Unified Language-driven Zero-shot Domain Adaptation》

摘要 本文提出了一個名為 Unified Language-driven Zero-shot Domain Adaptation&#xff08;ULDA&#xff09;的新任務設置&#xff0c;旨在使單一模型能夠適應多種目標領域&#xff0c;而無需明確的領域標識&#xff08;domain-ID&#xff09;知識。現有語言驅動的零樣本領域…

AI安全風險監測平臺:全周期防護體系構建

AI安全風險監測平臺通過構建全生命周期防護體系&#xff0c;實現對人工智能系統研發、部署、運行、迭代各階段的安全風險動態監測。該平臺融合算法審計、行為分析、合規驗證等核心能力&#xff0c;建立覆蓋模型安全、數據安全、應用安全的立體防御網絡&#xff0c;為智能系統提…

數據集-目標檢測系列- 杯子 數據集 bottle >> DataBall

數據集-目標檢測系列- 杯子 數據集 bottle &#xff1e;&#xff1e; DataBall 貴在堅持&#xff01; * 相關項目 1&#xff09;數據集可視化項目&#xff1a;gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview 2&#xff09;數據集訓練、推理相關…

視頻點播web端AI智能大綱(自動生成視頻內容大綱)的代碼與演示

通過AI技術將視頻課程自動生成結構化大綱和摘要&#xff0c;支持PPT教學視頻、企業內訓等場景應用。核心功能包括&#xff1a;自動匹配視頻知識點生成文本大綱、快速內容定位、降低課程制作成本。系統采用模塊化架構&#xff0c;包含Vue2.7前端組件、JS邏輯庫和演示項目&#x…

Linux: errno: EINPROGRESS-115

在connect接口的使用說明里&#xff0c;有這個錯誤&#xff1a;EINPROGRESS。 The socket is nonblocking and the connection cannot be completed immediately. It is possible to select(2) or poll(2) for completion by selecting the socket for writing. After select(2…