QMainWindow,QWidget,QDialog,這三基類都可以作為頂層窗口
QWidget:是所有窗口類的父類,功能最簡單
QMainWindow:如果窗口需要菜單欄,工具欄,狀態欄,就需要QMainWindow
QDialog:對話框窗口,最顯著的特點:右上角只有一個關閉按鈕
main.cpp
應用程序類和窗口類是Qt程序必須的兩個類
#include "mywidget.h" // qt中類名和頭文件名一樣, 而且沒有.h #include <QApplication> // 應用程序入口 int main(int argc, char *argv[]) { // 應用程序類, 每一個qt程序中有且只有一個 // 窗口執行起來之后,應用程序類進入一個消息循壞,不斷捕捉事件 QApplication a(argc, argv); // 窗口類, 創建出來之后默認不顯示 MyWidget w; // 頂層窗口 // 顯示窗口 w.show(); return a.exec(); // a 即應用程序類 }
mywidget.h
#ifndef MYWIDGET_H #define MYWIDGET_H #include <QWidget> #include <QPushButton> class MyWidget : public QWidget { Q_OBJECT // 如果使用信號和槽, 必須添加這個宏 public: MyWidget(QWidget *parent = 0); ~MyWidget(); private: QPushButton b1; QPushButton *b2; }; #endif // MYWIDGET_H
HelloQt.pro文件
#------------------------------------------------- # # Project created by QtCreator 2016-03-04T10:09:29 # #------------------------------------------------- QT += core gui # qt程序用到哪些模塊 # 兼容以前的版本,qt5 以取沒有widgets模塊,只有gui模塊,qt5 從gui中分離出widgets greaterThan(QT_MAJOR_VERSION, 4): QT += widgets # 生成的應用程序的名字 TARGET = 123 # 指定生成的makefile的類型 lib TEMPLATE = app # 源文件 \ 換行 SOURCES += main.cpp\ mywidget.cpp \ mybutton.cpp # 頭文件 HEADERS += \ mybutton.h \ mywidget.h CONFIG += c++11
mywidget.cpp
#include "mywidget.h" #include "mybutton.h" // 自定義類頭文件 MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { /* * 如果窗口需要依附另外一個窗口, 需要給該窗口指定父類 * 父窗口顯示的時候,子窗口也會隨之顯示 */ // 初始化 b2 = new QPushButton("hello, qt", this); // b2->setText("hello, qt"); // b2->show(); b1.setParent(this); b1.setText("我是老二"); // 改變位置 -- 移動 // 窗口坐標系 原點:左上角 x:向右遞增, y 向下遞增 b1.move(100, 100); b1.resize(50, 50); // 內存自動回收 // 1. 從QObject派生的類 1.直接 2.間接 // 2. 指定父類, 父親析構的時候,先析構他的孩子 // 創建自定義按鈕對象 MyButton* btn = new MyButton(this); btn->setText("wo shi mybutton"); // 設置窗口標題 this->setWindowTitle("明天就要離開中騰...."); // this->resize(200, 300); this->setFixedSize(200, 300); this->setWindowIcon(QIcon("D:\\Luffy.png")); // 需求 b1 關閉窗口 // connect(b1, 發出的信號, this, 處理信號的槽函數); connect(&b1, &QPushButton::clicked, this, &MyWidget::close); /* * b1: 信號的發出者, 此參數是一個指針 * &QPushButton::clicked: 信號發出者, 內部的一個信號 * 格式: & + 信號發出者類的名字 + :: + 信號的名字 * this: 信號的接收者, 此參數是一個指針 * &MyWidget::close: 信號的處理函數, 屬於this */ } MyWidget::~MyWidget() { }