第一章.我的第一個Qt專案
step1. 去最左上角 --> 新增專案或專案
有四種專案類型
這邊選擇Widgets應用程式
自己設專案名稱和路徑
下一步
選擇開發版本
再下一步
選擇基礎類別和專案窗口的類別名
這裡接受預設值(QMainWindow)即可
下一步
按下「完成」
專案建置完成後,會產生 Qt 預設的程式碼
到剛才設定的專案路徑,可以看到Qt Creator自動生成的幾個文件
Qt Creator為我們預設的QWidget
會不會是路徑有中文的關係
改一下
再試一次
結果還真的是
周冠羽你這個豬頭
你敢再用中文路徑你就死定了~~~~
專案分析
在我們的 Qt Creator 中
【改變視窗大小】---->resize(寬,高);
如果你仔細看 會發現 在我們 Qt Creator 右下角 會有一個"跑條"
那個是執行編譯時的進度
有感覺 Qt 編譯起來滿慢的....
【改變視窗初始化出現的預設位置】-->move(x,y)
【幫視窗命名初始化出現的預設位置】
---> setWindow( QObject::tr("我的視窗") );
--->或 setWindow( "我的視窗" ); //直接放string
setWindow( "我的視窗" ); 效果
setWindow( QObject::tr("我的視窗") ); 效果
我們可以對 setWindow這個方法
右鍵-->findUsages
查看參數使用說明
setWindow這個方法 後頭 要接的是一個QString
為何要用QObject類別
tr()函式為QObject類別的一個成員函式
使用時增加QObject::,可以使用工具提取出tr()函式內的字串,來翻譯成其他語言,讓程式實現國際化
【程式碼】
如何利用C++ cout 印出 視窗左上角座標
這裡我引用了
#include<iostream>
using namespace std ;
只不過 用 cout 在印國字時發現會出現 亂碼的問題
英文就沒事
自Qt5.1之後QTextCodec::setCodecForTr()來解決,
因為Qt5官方認為此函數被濫用
此Qt 5決定使用UTF-8為預設值
編譯器使用MINGW,應該不會出現中文亂碼問題
在Qt Creator的工具列
選擇[Tools]後按下[Options]進入Qt設定介面
會看到確實已經改成 預設utf8
印出視窗 寬、高
QRect類定了平面上的矩形
一個矩形在內部是由左上角和右下角表示的,但是通常它所表達到是一個左上角和一個大小
默認坐標系統的原點(0,0)在左上角
QRect::QRect ()
構造一個無效的矩形。
QRect::QRect ( const QPoint & topLeft, const QPoint & bottomRight )
構造一個左上角為topLeft,右下角為bottomRight的矩形。
QRect::QRect ( const QPoint & topLeft, const QSize & size )
構造一個左上角為topLeft並且矩形大小為size的矩形。
QRect::QRect ( int left, int top, int width, int height )
構造一個上、左、寬、高分別為top、left、width和height的矩形。
實例(創建三個同樣的矩形):
QRect r1( QPoint(100,200), QPoint(110,215) );
QRect r2( QPoint(100,200), QSize(11,16) );
QRect r3( 100, 200, 11, 16 );
【程式碼】
參考 Qt 官網
http://doc.qt.io/qt-5/qstring.html
有四種專案類型
這邊選擇Widgets應用程式
自己設專案名稱和路徑
下一步
選擇開發版本
再下一步
選擇基礎類別和專案窗口的類別名
這裡接受預設值(QMainWindow)即可
下一步
按下「完成」
專案建置完成後,會產生 Qt 預設的程式碼
到剛才設定的專案路徑,可以看到Qt Creator自動生成的幾個文件
Qt Creator為我們預設的QWidget
會不會是路徑有中文的關係
改一下
再試一次
結果還真的是
周冠羽你這個豬頭
你敢再用中文路徑你就死定了~~~~
專案分析
在我們的 Qt Creator 中
【改變視窗大小】---->resize(寬,高);
如果你仔細看 會發現 在我們 Qt Creator 右下角 會有一個"跑條"
那個是執行編譯時的進度
有感覺 Qt 編譯起來滿慢的....
【幫視窗命名初始化出現的預設位置】
---> setWindow( QObject::tr("我的視窗") );
--->或 setWindow( "我的視窗" ); //直接放string
setWindow( "我的視窗" ); 效果
setWindow( QObject::tr("我的視窗") ); 效果
我們可以對 setWindow這個方法
右鍵-->findUsages
查看參數使用說明
setWindow這個方法 後頭 要接的是一個QString
為何要用QObject類別
tr()函式為QObject類別的一個成員函式
使用時增加QObject::,可以使用工具提取出tr()函式內的字串,來翻譯成其他語言,讓程式實現國際化
【程式碼】
#include "mainwindow.h"
#include <QApplication>
#include <QObject>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.resize(600,300); //窗口尺寸為50*650
w.move(600,100); //窗口移動到距螢幕左上角600*100處
w.setWindowTitle(QObject::tr("我的Qt視窗")); //設定窗口標題
/*
tr()函式為QObject類別的一個成員函式,
因此使用時增加QObject::,可以使用工具提取出tr()函式內的字串,
來翻譯成其他語言,所以如果想讓程序實現國際化,
那麼就在使用者所有可見的字符串處都使用QObject::tr()
*/
w.show();
return a.exec();
/*a.exec()函式開啟事件循環,事件循環為一段無限循環,
* 不斷等待作業系統或使用者的訊息,直到應用程式結束才停止。*/
}
如何利用C++ cout 印出 視窗左上角座標
這裡我引用了
#include<iostream>
using namespace std ;
只不過 用 cout 在印國字時發現會出現 亂碼的問題
英文就沒事
自Qt5.1之後QTextCodec::setCodecForTr()來解決,
因為Qt5官方認為此函數被濫用
此Qt 5決定使用UTF-8為預設值
編譯器使用MINGW,應該不會出現中文亂碼問題
在Qt Creator的工具列
會看到確實已經改成 預設utf8
印出視窗 寬、高
QRect類定了平面上的矩形
一個矩形在內部是由左上角和右下角表示的,但是通常它所表達到是一個左上角和一個大小
默認坐標系統的原點(0,0)在左上角
QRect::QRect ()
構造一個無效的矩形。
QRect::QRect ( const QPoint & topLeft, const QPoint & bottomRight )
構造一個左上角為topLeft,右下角為bottomRight的矩形。
QRect::QRect ( const QPoint & topLeft, const QSize & size )
構造一個左上角為topLeft並且矩形大小為size的矩形。
QRect::QRect ( int left, int top, int width, int height )
構造一個上、左、寬、高分別為top、left、width和height的矩形。
實例(創建三個同樣的矩形):
QRect r1( QPoint(100,200), QPoint(110,215) );
QRect r2( QPoint(100,200), QSize(11,16) );
QRect r3( 100, 200, 11, 16 );
【程式碼】
#include <iostream>
#include "mainwindow.h"
#include <QApplication>
#include <QObject>
#include <QTextCodec>
using namespace std;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//QTextCodec::setCodecForTr(QTextCodec::codecForName("big5"));
//setCodecForTr自5.6以後都不屬於QTextCodec這個類中的成員了
//QTextCodec::setCodecForLocale(QTextCodec::codecForName("big5"));
//QTextCodec::codecForName("big5");
MainWindow w;
w.resize(600,300); //窗口尺寸為50*650
w.move(600,100); //窗口移動到距螢幕左上角600*100處
w.setWindowTitle(QObject::tr("我的Qt視窗")); //設定窗口標題
//w.setWindowTitle("我的Qt視窗"); //設定窗口標題
/*
tr()函式為QObject類別的一個成員函式,
因此使用時增加QObject::,可以使用工具提取出tr()函式內的字串,
來翻譯成其他語言,所以如果想讓程序實現國際化,
那麼就在使用者所有可見的字符串處都使用QObject::tr()
*/
int windowXPos = w.x(); //窗口左上角x座標
int windowYPos = w.y(); //窗口左上角y座標
QRect windowGeometry = w.frameGeometry(); //返回的QRect可得窗口長、寬、位置等資訊。
w.show();
//cout<<"視窗的左上角點座標為:"<<endl;//會出現亂碼
cout<<"Top left window coordinates:"<<endl;
cout<<"("<<windowXPos<<","<<windowYPos<<")"<<endl;
cout<<windowGeometry.height()<<endl;//印出視窗高度
cout<<windowGeometry.width()<<endl;//印出視窗寬度
return a.exec();
/*a.exec()函式開啟事件循環,事件循環為一段無限循環,
* 不斷等待作業系統或使用者的訊息,直到應用程式結束才停止。*/
}
參考 Qt 官網
http://doc.qt.io/qt-5/qstring.html
留言
張貼留言