1. 程式人生 > >Qt之彈出介面顯示在父視窗中間

Qt之彈出介面顯示在父視窗中間

彈出介面顯示在主視窗中間博主暫時只知道兩種方式

第一種:

    建立新的對話方塊時把父視窗的指標傳遞給對話方塊

    QNewDiglog *dlg  = new QNewDiglog(parent);

    dlg->show();

    彈出的對話方塊就會自動顯示在父視窗的中間

第二種:

    建立新對話方塊時獲取父視窗的指標,再獲取父視窗原點座標,計算顯示的位置

QWidget *widget = nullptr;
//獲取程式所有的widget
QWidgetList widgetList = QApplication::allWidgets();
//獲取父視窗指標 此處獲取objectName 可根據需求自行判斷
for(int i=0; i<widgetList.length(); i++){
    if(widgetList.at(i)->objectName() == "MainWindow"){
        widget = widgetList.at(i);
    }
}
if(widget){
//獲取父視窗geometry
    QRect rect = widget->geometry();
    //計算顯示原點
    int x = rect.x() + rect.width()/2 - this->width() /2;
    int y = rect.y() + rect.height()/2 - this->height();
    this->move(x, y);
}

以上方法適合不在父類建立對話方塊,獲取不了父視窗指標時,手動獲取父視窗指標。

寫得比較簡單有不懂的可以發郵箱[email protected] 一起交流。

相關推薦

Qt介面顯示視窗中間

彈出介面顯示在主視窗中間博主暫時只知道兩種方式第一種:    建立新的對話方塊時把父視窗的指標傳遞給對話方塊    QNewDiglog *dlg  = new QNewDiglog(parent);    dlg->show();    彈出的對話方塊就會自動顯示在父

layui層--從視窗傳遞資料到子視窗

前一篇《layui之資料表格–與後臺互動獲取資料》介紹了layui資料表格如何獲取動態資料,接下來介紹下layui如何往彈出層子視窗傳遞表格資料 示例如圖: 點選編輯按鈕,彈出編輯彈出層,並顯示相應的編輯資料 這裡省略layui基礎的語法,

PopupWindow簡單實用小例子內容顯示框(一)

我們要做的功能是點選按鈕彈出一個內容框之後點選彈出的對話方塊的內容將內容顯示在輸入框中先來看下效果圖 利用PopupWindow實現彈出的內容框,PopupWindow構造可以理解為ListView+TextView,ListView是整個顯示內容的框架,而我們要顯示的內容是用TextVi

QT多個介面

主要的功能是為了實現在點選主視窗的按鈕後可以彈出一個新的對話方塊,所以我們需要新建一個Dialog類。 1.在主視窗處新增一個可以彈出另一個視窗的按鈕,然後轉到槽,選擇click,然後在彈出的按鈕函式中新增 my.show(); 2新建設計師介面類(如

unity 編輯器(二)視窗

彈出對話方塊首先要需要新增選單欄按鈕,來調出視窗 彈出對話方塊 [MenuItem("Testbtn/windowtest", false,2)] staticvoidWindow() { //第一個引數為視窗名字,第二個為按鈕名字預設為create wi

js視窗

關於彈出框,之前在專案中,一直想新增,奈何好多都忘了,今天重新學了一把,廢話少說,直接上效果與原始碼分析 一、簡單實現效果 建議大家不再在學習window.showModalDialog了,這個方法在2014年已經被谷歌等主流瀏覽器取消函數了 二、原始碼 首先我們

Qt 關於對話方塊,實現居中顯示

本人實現的是 QFrame 居中! 因為要實現QFrame 彈出居中顯示。。 在QFrame->show之前實現move,但是這樣是取不到QFrame真實的大小! 在QFrame->show之後實現move,這時move就會出現閃屏的現象發生。 用resi

Qt如何視窗以及注意事項(某位大神的講解)

第一種方法:自己新增一個設計介面類或者只用程式碼的類,設計一個介面,像其他對話方塊一樣,使用就可以了 第一個是對話方塊 下面是 主視窗 QWidget (這也會生成ui文字 可以拖控制元件,實現自定義的子視窗)下面 的視窗部件是可選的, 另外,還可以 (這個生成不帶u

設置div顯示隱藏效果

div----頁面div <div id="show_scfsxz" style="display:none;zindex:1000;position:absolute;left:850px;top:28px;border:1px solid #06c;padding:0px;background:#

Framework7學習筆記 層(Popover)

-a pan work open body ron ram 信息 筆記 一:彈出層 或者說,稱呼為“懸浮層”更合適。 用 popover 臨時彈出一小塊懸浮層顯示一些信息,用戶點擊popover窗口外面區域時會關閉它。 二:定義Popover

C# Winform在win10裡無焦點的視窗

原文: C# Winform在win10裡彈出無焦點的視窗 有個專案需要在右下角彈出廣告視窗,但是又不能影響使用者的使用,視窗不能有焦點。 在網上搜了一堆,都是以下的程式碼,在form中新增一段樣式。 protected override CreateParam

Aras Client Side程式碼Error, Warning, Success視窗

1、ItemType-Form中增加三個按鈕。 2、對應Method程式碼為: aras.AlertError("Error Happened"); aras.AlertWarning("Warining, maybe something error"); aras.AlertSuccess("O

網絡卡故障:介面eth0: 錯誤:沒有找到合適的裝置:沒有找到可用於連結System eth0 的

今天在使用putty連線linux6.0系統遠端的時候,重啟網絡卡的時候發現此報錯: 報錯截圖如下: 排錯步驟如下: 1:檢視系統是否識別相應網絡卡(發現沒有eth0網絡卡存在): 根據顯示資訊我們可以初步判定系統網絡卡資訊有問題: 2:檢視當前MAC地址相關資訊:

Jquery 點選圖片在顯示大圖 (很好用)

效果圖片: 1.點選前的效果: 2.點選後的效果: html程式碼: <td width="350"> <img height="100" width="100" src="http://or7y3wqnj.bkt.clouddn.com/${f

VS程式設計,C#顯示欄位資訊,分行,增加空格的一種方法。

‘\n’是換行; “    ”是填充的空格; aaaa是程式中定義的 int  資料,也可以是其它型別的資料; 注意各自的符號。最後一項可以不要,  MessageBox.Show("資料匯入完成"

點選連結一個DIV層視窗

做裝置介紹頁面的時候,發現每個裝置點選檢視詳情都需要連結一個新的頁面,這樣比較影響網頁瀏覽的效率和舒適度,所以想用彈窗的形式在當前頁面展示詳情。彈出的視窗要固定在瀏覽器視窗的中間位置,我採用了fixed固定佈局。 <!--HTML--> <body style="backg

介面eth0:錯誤:啟用連線失敗:Device not managed by NetworkManager or unavailable

解決的方法如下:命令:service NetworkManager stop 為了防止下次啟動時,該服務重新啟動,解決方法: chkconfig NetworkManager off 再重啟網絡卡,

分享介面

1.先上效果圖:                                                                                       2.WHActivityView.h檔案 // // 

QT 實現提示框定時消失

#include "dialog.h" #include "ui_dialog.h" #include <QLabel> #include <QTimer> Dialog::Di

OpenLayers 3 框(popup)

摘要          上回說到,載入完地圖後,我們想更多一點互動,而不僅僅是縮放和平移,賦予地圖多一點的生命 ~-~!點選地圖,它至少應該知道我是在哪裡點選了,並且彈出一個氣球類似的框框告訴我!這次,我們就來嘗試給我們的地圖加上這個能力!          PS:這次的例