1. 程式人生 > >QT學習---day1---視窗按鈕的操作

QT學習---day1---視窗按鈕的操作

//qt學習筆記:

//12_7

//跨平臺,完全面向物件,容易擴充套件,容易組建程式設計。

//QWidget 和 QMainWindow 和 QDialog 之間的關係。
//QWidget是基類,QMainWindow 和 QDialog 是子類。

/*
QWidget 是一個大的空視窗。
QMainWindow 包含一些狀態列,例如檔案、編輯等。
QDialog 對話方塊
*/

/*
專案管理:
團體開發軟體時:git,vss,svn

svn:最常用的工作:update;提交之前先更新,防止衝突;
若出現衝突,就會出現:A寫的----;B寫的----
當協調解決問題後,點選solve提示svn解決了衝突。
會出現的bug:lock;  svn可能會自鎖,不能進行任何操作。
此時輸入:unlock;
*/

/*
pro檔案:相當於sln檔案;
*/

//一個問題的解決:https://blog.csdn.net/naturly/article/details/81390377

#include "mywidget.h"
#include <QApplication> //包含標頭檔案  應用程式的標頭檔案;

//main 函式中的操作
//程式的入口 argc命令列變數數量   argv命令列變數陣列;
 

int main(int argc, char *argv[])
{
    //應用程式物件 a,Qt中  有且僅有一個應用程式物件;
    QApplication a(argc, argv);
    //建立一個 myWidget 物件w。myWidget基類 QWidget
    myWidget w;
    //視窗預設是不會彈出的,如果想彈出  呼叫show方法
    w.show();
    //a.exec()進入訊息迴圈機制,相當於C++ system("pause");
    return a.exec();
}

//一個問題的解決方法:https://blog.csdn.net/wxf2012301351/article/details/52182769
//pro的介紹:

#-------------------------------------------------
#
# Project created by QtCreator 2018-12-07T10:14:28
#
#-------------------------------------------------

QT       += core gui        //    qt包含的模組

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets   //大於函式,大於4版本包含widgets模組;

TARGET = 123.exe    //生成的.exe可執行檔案的名稱---後期要修改程式名可以在這個裡面修改;
TEMPLATE = app        //模板 ---- 應用程式

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0


SOURCES += \            //原始檔
        main.cpp \
        mywidget.cpp

HEADERS += \            //標頭檔案
        mywidget.h

        


        
        
//********************************************************************************************************************************************
//QT中的命名規範以及快捷鍵;
//類名:首字母大寫   單詞與單詞之間  首字母大寫
//函式、變數名:首字母小寫,單詞與單詞之間首字母大寫;
//快捷鍵:   ctrl + R
//編譯:     ctrl + B
//查詢:     ctrl + F
//幫助文件:  F1
//字型縮放    ctrl + 滑鼠縮放
//自動對齊    ctrl + i
//整行移動    ctrl + shift + ↑ 或者 ↓
//同名之間的  .h  .cpp切換     F4
//********************************************************************************************************************************************

//設定視窗和設定按鈕

#include "mywidget.h"
#include <QPushButton>


myWidget::myWidget(QWidget *parent)
    : QWidget(parent)       //初始化列表;----不要和繼承弄混;
{
    //按鈕:

    //第一種按鈕方法:
    QPushButton * btn = new QPushButton;
    //btn -> show();  //show是用頂層方式彈出,如果想在mywidget視窗中顯示,就需要一來mywidget視窗;
    //設定父親
    btn->setParent(this);//this指標
    //設定檔案
    btn->setText("德瑪西亞");//將 char*隱式型別轉換為QString;


    QPushButton * btn2 = new QPushButton("第二個按鈕",this);
    //視窗大小和按鈕大小差不多。這種方式設定,視窗會按照btn2大小設定。
    //可以重置視窗的大小。
    this -> resize(600,400);

    //第二個按鈕會覆蓋第一個按鈕,移動第二個按鈕:
    btn2->move(100,100);

    //按鈕是否能夠重置大小?
    btn2->resize(50,50);

    //如何重置視窗的標題:
    //this下面的方法,可以不寫this:
    setWindowTitle("qt第一個視窗");

    //設定固定的視窗大小:
    setFixedSize(600,600);
}

myWidget::~myWidget()
{

}

//*****************************************************************************************************************************************************

//************************************************************************************
(重點)
//qt的優點:一定程度下簡化了記憶體回收機制。
//物件樹的概念:
//qt如何釋放記憶體的?
//所有new出來的物件會在視窗關閉後進行自動釋放;

物件樹的概念就是qt提供的記憶體回收機制。通常指定一個new的變數的parent為this來設定。

//*************************************************************************************
qt中的座標系:
從左上角開始為(0,0)原點,向右為x軸正向,向下為y軸正向;
//*************************************************************************************