1. 程式人生 > >Qt開發:如何將QDialog 類轉換為QWidget

Qt開發:如何將QDialog 類轉換為QWidget

1     搭建實驗環境-----目的是 將 QDialog 類轉變為 QWidget類  

       a  使用qt creator 建立專案工程 Dialog_to_Widget, 主介面用  MainWindow類,另外2個介面用QDialog類和QWidget類。

 b  在主介面上建立2個pushButton ,DialogpushButton 和Widget pushButton ,主要用於彈出Dialog 和Widget介面。

        介面如下:

       

2 現在開始將Dialog改為QWidget類


3 編譯一下,報錯 

    C:\Users\Lion\Desktop\1\Dialog_to_Widget-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK____\..\Dialog_to_Widget\dialog.cpp:8: 錯誤:no matching function for call to 'Ui::Dialog::setupUi(Dialog* const)'

4 登出掉 dialog.cpp 的這行 

      //ui->setupUi(this);
5 編譯過了,但是Dialog 不出介面,Widget可以。
6  修改ui_dialog.h 檔案 
  void setupUi(QDialog *Dialog)   ----->  void setupUi(QWidget *Dialog)

  void retranslateUi(QDialog *Dialog)-----> void retranslateUi(QWidget *Dialog)

7   啟用步驟 4 ,  ui->setupUi(this);

8  編譯執行,出現如下情況

    Dialog 內嵌在 MainWindow內,如果你先點Dialog 那麼Widget不能點。


9 解決方法 

原始碼

voidMainWindow::on_DialogpushButton_clicked()
{
Dialog*d=newDialog(this);
d->show();
}

改為

voidMainWindow::on_DialogpushButton_clicked()
{
Dialog*d=newDialog; //原因Dialog現在已經是QWidget類了
d->show();
}

10 編譯執行--已經成功變為QWidget, 注意觀察Dialog 有最小化,最大化 關閉框


11  如果要拿到 QT+VS2010環境中編譯,開啟vs2010,選擇Qt外掛開啟剛才的工程 *.pro檔案。

      出現如下錯誤

1>dialog.cpp(8): error C2664: “Ui_Dialog::setupUi”: 不能將引數 1 從“Dialog *const ”轉換為“QDialog *”

1>          與指向的型別無關;轉換要求 reinterpret_cast、C 樣式轉換或函式樣式轉換

        解決方法: 重複步驟6就可以啦,或者將先前的ui_dialog.h檔案覆蓋當前的,如果你重新生成要再次修改。

相關推薦

Qt開發如何QDialog 轉換QWidget

1     搭建實驗環境-----目的是 將 QDialog 類轉變為 QWidget類          a  使用qt creator 建立專案工程 Dialog_to_Widget, 主介面用  MainWindow類,另外2個介面用QDialog類和QWidget類

做一次面向物件的體操JSON字串轉換巢狀物件的一種方法

能不能把這個JSON串轉成相應的物件,更易於使用呢? 為了方便講解,這裡重複寫下JSON串。 { “item:s_id:18006666”: “1024”, “item:s_id:18008888”: “1024”, “item:g_id:1800

[Swift]庫函式atoi字串內容轉換整數

1、如果第一個非空格字元存在,是數字或者正負號則開始做型別轉換,之後檢測到非數字(包括結束符 \0) 字元時停止轉換,返回Int32整形數。否則,返回0。 1 //返回Int32位整形 2 print(atoi("123456")) 3 //Print 123456 4 print(atoi("

LeetCode演算法題108有序陣列轉換二叉搜尋樹解析

將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,nul

C語言toupper()函式小寫字母轉換大寫字母

標頭檔案:#include <ctype.h> 定義函式:int toupper(int c); 函式說明:若引數 c 為小寫字母則將該對應的大寫字母返回。 返回值:返回轉換後的大寫字母,若不須轉換則將引數c 值返回。 範例:將s 字串內的小寫字母轉換成大寫字母

Qt中實現float型別轉換QString型別

在使用Qt Creator程式設計時,難免會用到將float型別轉換為QString型別的時候下面是我所有的方法: 1. 將QString型別轉化為float型別,很簡單     QString data;                 float num = data.

Hibernate錯誤記錄(二) nvarchar 值轉換 JDBC 資料型別 TIMESTAMP 時發生錯誤。

Hibernate結合SQlSever2012做查詢操作,在出生日期發生的型別轉換錯誤: 以下是資料庫設計: 如圖birthday資料型別為date; 以下是報錯資訊: Caused by: com.microsoft.sqlserver.jdbc.SQLServerE

javaJSON字串轉換實體物件,基於net sf json實現

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

分析802.11無線報文hexdump內容利用wireshark自帶二進位制工具text2pcaphexdump內容轉換pcap檔案

除錯wifi驅動,有時會將報文內容以16進位制形式打印出來,如下是一個beacon報文的內容: 0000 80 00 00 00 ff ff ff ff ff ff 40 e3 d6 cb fe d0 0010 40 e3 d6 cb fe d0 70 29 7b 00 55 41 00 00 00

QT UNICODE 字串轉換 QString

問題: 最近在做QT日誌時,遇到了傳入的字元為漢字的UNICODE編碼的字串,需要將其還原為漢字, 例如 "\u542F\u52A8...“ 是中文字元啟動,這就是中文字元被轉換為UNICODE儲存的16進位制,現在需要轉換為原文字。 具體程式碼: QStringLis

如何EntityFramework實體轉換JSON字串

前些天在轉換EntityFramework實體類為JSON時出錯,我想很多朋友肯定也有相同遭遇。下面這個自定義的轉換參考了一些網上的資料,實際出處記不太清楚了,好像來自CSDN論壇,感謝這些達人們。中間遇到一些問題,自己改了一些地方,比如對DateTime?型別的處理。 u

Qt開發Qt Widgets模組——QDateEdit

QDateEdit類提供了一個基於QDateTimeEdit類編輯日期的小部件。標頭檔案:#include <QDateEdit> qmake:QT += widgets繼承:QDateTimeEditQDateEdit提供的許多屬性和函式都在QDateTimeE

發一波很6的程式碼 EntityUtils ,陣列資料轉換實體

package cn.fht.carsys.component.util.common; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.lang.reflect.Construct

【iOS開發系列】阿拉伯數字轉換中文數字

/** * 將阿拉伯數字轉換為中文數字 */ +(NSString *)translationArabicNum:(NSInteger)arabicNum { NSString *arabicNumStr = [NSString stringWithForma

工具檔案大小轉化帶有B、KB、MB、GB的字串

有時候我們需要將檔案的大小進行顯示,對於普通使用者來說,最直觀的是顯示帶單位的大小數值,比如3KB,10MB之類的,因為專案內用的比較多,所以就封裝一個工具類方便使用:package com.example.yzb.myapplication; import java.te

練習題1浮點數轉化金額的

注:該練習題來自(Python 核心程式設計 第二版)第13章 練習題13-3,題目如下: 13-3.對類進行定製,寫一個類,用來將浮點型值轉化為金額,在本練習裡,我們使用美國貨幣,但讀者也可以自選任意貨幣。 基本任務:編寫一個dollarize()函式,它以一個浮

Qt開發Qt Widgets模組——QColumnView

QColumnView類提供了一個列檢視的模型/檢視實現。標頭檔案:#include <QColumnView>qmake:QT += widgets繼承:QAbstractItemViewQColumnView在許多QListView中顯示一個模型,樹中的每個層

Qt開發Qt Widgets模組——QApplication

QApplication類管理GUI應用程式的控制流和主要設定。標頭檔案:#include <QApplication> qmake:QT += widgets繼承:QGuiApplicationQApplication專門為QGuiApplication提供基於

使用 Qt Designer建立前端介面,通過VS CodeQt Designer建立好的.ui轉換.py,最後使用PyQt5實現點選按鈕介面發生跳轉

簡單的提一下PyQt5,Qt Designer的安裝 python 版本:3.6.2 使用pip安裝: pip3 install PyQt5 之後通過安裝PyQt5-tools,會自動安裝Qt Designer pip install PyQt

LeetCode108. 有序陣列轉換二叉搜尋樹(Java)

題目: 將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null,5