Qt之窗口的父子關係:Widget與按鈕

一、新建項目-->其餘項目--->Empty qmake project:只有一個pro程序app

一、新建項目-->其餘項目--->code snapped--->Gui application
 函數

二、修改main.cpp:在主窗口上顯示一個按鈕:也就是將按鈕的父窗口設置爲widget[由於QPushButton 繼承QWidget],這樣widget就和button關聯起來了,當widget的show時候會調用button的show。工具

#include <QApplication>
#include <QWidget>
#include <QPushButton>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QWidget w;

    QPushButton button;   /*按鈕是窗口*/
    button.setText("Button");
    button.setParent(&w);   //窗口對象的父子關係:設置父窗口是button
   
    w.show();
    w.setWindowTitle("Hello world");
    w.show();
    return app.exec();
}

若是沒有設置父子關係,那麼這個程序就有兩個主窗口,按鈕窗口和widget窗口沒有關係,單獨顯示:ui

#include <QApplication>
#include <QWidget>
#include <QPushButton>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QWidget w;

    QPushButton button;   /*按鈕是窗口*/
    button.setText("Button");
  //  button.setParent(&w);   //窗口對象的父子關係:設置父窗口是button
    button.show();  //必須
    w.show();
    w.setWindowTitle("Hello world");
    w.show();
    return app.exec();
}

三、添加信號與槽機制code

#include <QApplication>
#include <QWidget>
#include <QPushButton>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QWidget w;

    QPushButton button;   /*按鈕是窗口*/
    button.setText("Button");
    button.setParent(&w);   //窗口對象的父子關係:設置父窗口是button
    //添加信號與槽:當clicked()函數被調用,close()也被調用
    QObject::connect(&button, SIGNAL(clicked()), &w, SLOT(close()));
    w.show();
    w.setWindowTitle("Hello world");
    w.show();
    return app.exec();
}

效果是當按鈕被點擊了,窗口就會退出。對象

 

四、設置button的位置blog

#include <QApplication>
#include <QWidget>
#include <QPushButton>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QWidget w;

    QPushButton button;   /*按鈕是窗口*/
    button.setText("Button");
    button.setParent(&w);   //窗口對象的父子關係:設置父窗口是button
    button.setGeometry(30, 30, 100, 30);   //座標原點在窗口的左上角[不包括工具欄]
    //添加信號與槽:當clicked()函數被調用,close()也被調用
    QObject::connect(&button, SIGNAL(clicked()), &w, SLOT(close()));
    w.show();
    w.setWindowTitle("Hello world");
    w.show();
    return app.exec();
}

 

--繼承

相關文章
相關標籤/搜索