日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第三课、Qt的诞生和本质------------------狄泰软件学院

發(fā)布時(shí)間:2023/12/19 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第三课、Qt的诞生和本质------------------狄泰软件学院 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、GUI用戶界面元素

(1)、GUI應(yīng)用程序是由固定的窗口元素所構(gòu)成

(2)、操作系統(tǒng)提供了創(chuàng)建用戶界面元素所需要的函數(shù)

(3)、各自功能不同的函數(shù)依次調(diào)用,從而創(chuàng)建出界面元素

(4)、操作系統(tǒng)提供的元素函數(shù)無法直接映射到界面元素

二、面向?qū)ο蟮腉UI應(yīng)用程序設(shè)計(jì)

1、GUI應(yīng)用程序的應(yīng)用

(1)、GUI應(yīng)用程序是為了解決非科學(xué)計(jì)算問題而誕生的

(2)、GUI應(yīng)用程序適用于非專業(yè)的日常生活領(lǐng)域

(3)、面向過程程序設(shè)計(jì)方法學(xué)不適合GUI程序設(shè)計(jì)

(4)、面向?qū)ο?/span>程序設(shè)計(jì)方法學(xué)更適合GUI程序設(shè)計(jì)

2、用面向?qū)ο蟮姆椒创鼼UI程序設(shè)計(jì)

(1)、用面向?qū)ο?/span>的方法看待GUI界面元素

(2)、所有的界面元素都可以看做實(shí)際的對象

(3)、GUI用戶界面是由各不相同的對象組成的

(4)、如主窗口對象

A、菜單對象

B、按鈕對象

C、文本框?qū)ο?/strong>

3、GUI應(yīng)用程序非常適合采用面向?qū)ο蟮姆椒▽W(xué)

(1)、將界面元素定義成對應(yīng)的類

(2)、通過抽象和封裝可以隱藏界面元素的細(xì)節(jié)

(3)、程序的創(chuàng)建過程就是組合不同元素對象的過程

//main.cpp

#include <windows.h> #include "Application.h" #include "MainWindow.h" #include "PushButton.h"BOOL WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {Application a(hInstance, lpCmdLine);MainWindow w(hInstance, L"Main Window");PushButton b(&w, L"My Button");w.show();return a.exec(); } View Code

//Application.h

#pragma once#include <windows.h>class Application { public:Application(HINSTANCE hInstance, LPSTR lpCmdLine);bool exec(); }; View Code

//Application.cpp

#include "Application.h"Application::Application(HINSTANCE hInstance, LPSTR lpCmdLine) {}bool Application::exec() {MSG msg = { 0 };//進(jìn)入消息循環(huán)while ( GetMessage(&msg, NULL, 0, 0)){//翻譯并轉(zhuǎn)換系統(tǒng)消息TranslateMessage(&msg);//分發(fā)消息到對應(yīng)的消息處理函數(shù)DispatchMessage(&msg);}return TRUE; } View Code

//Widget.h

#pragma once#include <windows.h>class Widget { protected:Widget* m_parent;HWND m_hwnd; public:Widget();Widget(Widget* parent);HWND hwnd();Widget* parent(); }; View Code

//Widget.cpp

#include "Widget.h"Widget::Widget() {m_parent = NULL; }Widget::Widget(Widget* parent) {m_parent = parent; }HWND Widget::hwnd() {return m_hwnd; }Widget* Widget::parent() {return m_parent; } View Code

//MainWidow.h

#pragma once#include "Widget.h"class MainWindow : public Widget { protected:static const wchar_t STYLE_NAME[];//主窗口定義 BOOL DefineMainWindow(HINSTANCE hInstance);//主窗口創(chuàng)建void CreateMainWindow(HINSTANCE hInstance, const wchar_t* title);//主窗口消息處理函數(shù)static LRESULT CALLBACK WndProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam);public:MainWindow(HINSTANCE hInstance, const wchar_t* title);void show(); }; View Code

//MainWidow.cpp

#include "MainWindow.h"const wchar_t MainWindow::STYLE_NAME[] = L"MainForm";//主窗口定義 BOOL MainWindow::DefineMainWindow(HINSTANCE hInstance) {static WNDCLASS WndClass = { 0 };//系統(tǒng)結(jié)構(gòu)類型,用于描述窗口樣式 WndClass.style = 0;WndClass.cbClsExtra = 0;WndClass.cbWndExtra = 0;WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW); //定義窗口背景色WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); //定義鼠標(biāo)樣式WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); //定義窗口左上角圖標(biāo)WndClass.hInstance = hInstance; //定義窗口樣式屬于當(dāng)前應(yīng)用程序WndClass.lpfnWndProc = (WNDPROC)WndProc; //窗口消息處理函數(shù)WndClass.lpszClassName = STYLE_NAME; //窗口樣式名WndClass.lpszMenuName = NULL;//將定義好的窗口樣式注冊到系統(tǒng)上return RegisterClass(&WndClass); }//主窗口創(chuàng)建 void MainWindow::CreateMainWindow(HINSTANCE hInstance, const wchar_t* title) {m_hwnd = CreateWindow(STYLE_NAME, //通過定義好的窗口樣式創(chuàng)建主窗口title, //主窗口標(biāo)題WS_OVERLAPPEDWINDOW,//創(chuàng)建后主窗口的顯示風(fēng)格CW_USEDEFAULT, //主窗口左上角x坐標(biāo)CW_USEDEFAULT, //主窗口左上角y坐標(biāo)CW_USEDEFAULT, //主窗口寬度CW_USEDEFAULT, //主窗口高度NULL, //父窗口NULL, //主窗口菜單hInstance, //主窗口屬于當(dāng)前應(yīng)用程序 NULL); }//主窗口消息處理函數(shù) LRESULT CALLBACK MainWindow::WndProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam) {switch (message){case WM_DESTROY:PostQuitMessage(0);break;default://調(diào)用系統(tǒng)提供的默認(rèn)消息處理函數(shù)return DefWindowProc(hWnd, message, wParam, lParam);}return 0; }MainWindow::MainWindow(HINSTANCE hInstance, const wchar_t* title) :Widget(NULL) {DefineMainWindow(hInstance);CreateMainWindow(hInstance, title); }void MainWindow::show() {ShowWindow(m_hwnd, SW_SHOWNORMAL); //顯示窗口UpdateWindow(m_hwnd); //刷新窗口 } View Code

//PushButton.h

#pragma once#include "Widget.h"class PushButton : public Widget { public:PushButton(Widget* win, const wchar_t* text); }; View Code

//PushButton.cpp

#include "PushButton.h"PushButton::PushButton(Widget* win, const wchar_t* text) {HINSTANCE hInstance = (HINSTANCE)GetWindowLong(win->hwnd(), GWL_HINSTANCE);m_hwnd = CreateWindow(L"button", //通過系統(tǒng)預(yù)定義的窗口樣式創(chuàng)建元素text, //窗口元素標(biāo)題WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,//創(chuàng)建后窗口元素的顯示風(fēng)格50, //窗口元素在主窗口左上角x坐標(biāo)50, //窗口元素在主窗口左上角y坐標(biāo)200, //窗口元素寬度60, //窗口元素高度win->hwnd(), //父窗口(HMENU)this, //窗口元素ID值hInstance, //窗口元素屬于當(dāng)前應(yīng)用程序 NULL); } View Code

三、QT的本質(zhì)

(1)、QT是利用面向?qū)ο蠓椒▽W(xué)開發(fā)的一套GUI組件庫

(2)、QT將不同操作系統(tǒng)的GUI細(xì)節(jié)封裝于類的內(nèi)部

(3)、QT提供一套跨平臺(tái)的類用于開發(fā)GUI程序

(4)、QT遵循經(jīng)典的GUI應(yīng)用程序開發(fā)模式

四、小結(jié)

(1)、GUI程序開發(fā)更適合采用面向?qū)ο?/span>方法學(xué)

(2)、所有的界面元素都可以看做是實(shí)際的對象

(3)、GUI用戶界面是由各不相同的對象組成的

(4)、QT是利用面向?qū)ο蠓椒▽W(xué)開發(fā)的一套GUI組件庫

(5)、QT將GUI細(xì)節(jié)封裝于類的內(nèi)部,具有跨平臺(tái)的特性  

轉(zhuǎn)載于:https://www.cnblogs.com/gui-lin/p/6385174.html

總結(jié)

以上是生活随笔為你收集整理的第三课、Qt的诞生和本质------------------狄泰软件学院的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。