Qt笔记1
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
1、treewidget 樹形列表
2、使用布局管理器的步驟:1、擺控件(一組一組的擺放,放好一組就全選設(shè)定為一個(gè)局部布局);2、對(duì)幾個(gè)要排在一起的控件全選之后右擊選擇布局方式,然后再調(diào)一下大小;3、這樣一個(gè)一個(gè)的局部布局?jǐn)[好之后,實(shí)現(xiàn)控件隨窗口變化的最重要的一步就是單擊主窗口,取消對(duì)控件的選擇之后,右擊主窗口,選擇一個(gè)頂級(jí)的布局方式,這樣就可以實(shí)現(xiàn)想要的效果了,但是這樣做的一個(gè)不足就是位置和大小又會(huì)有點(diǎn)小亂,可能是我沒找到具體調(diào)節(jié)設(shè)置的地方,繼續(xù)查找中
? 注意的是一定要在最后,即各個(gè)局部布局都設(shè)定好后,才設(shè)定頂級(jí)布局,之前看有些人寫的,有點(diǎn)害人,對(duì)初學(xué)者誤導(dǎo)很多。
3、shadow build : 創(chuàng)建項(xiàng)目的時(shí)候勾選這個(gè)選項(xiàng),就會(huì)生成兩個(gè)文件夾,也就是debug會(huì)單獨(dú)放到一個(gè)文件夾中,不勾選的話整個(gè)項(xiàng)目就一個(gè)文件夾,debug和release都在主文件夾內(nèi)
4、Vertical 垂直布局
? ? Horizontal 水平布局
5、例如我要在一個(gè)label上設(shè)置當(dāng)前時(shí)間?
QDateTime time = QDateTime::currentDateTime();//獲取系統(tǒng)現(xiàn)在的時(shí)間
QString str = time.toString("yyyy-MM-dd hh:mm:ss ddd"); //設(shè)置顯示格式
label->setText(str);//在標(biāo)簽上顯示時(shí)間
qt 獲取系統(tǒng)時(shí)間顯示出來(lái)
#include <qdatetime.h>
#include <qtimer.h>
QTimer *timer= new QTimer(this,"timer");
?connect(timer, SIGNAL(timeout()), this, SLOT(showTime()));
?timer->start(8000);
void ylform::showTime()
{
?QDateTime datatime = QDateTime::currentDateTime();
?
?int y=datatime.date().year();
?int m=datatime.date().month();
?int d=datatime.date().day();
?
?QString strtime = datatime.time().toString();
?time1->setText(strtime+" ? "+QString::number(y)+"/"+QString::number(m)+"/"+QString::number(d));
?data1->setText(QString::number(y)+"/"+QString::number(m)+"/"+QString::number(d));
?
}
ui->label->setText(strTime+" ? "+QString::number(y)+"/"+QString::number(m)+"/"+QString::number(d));
6、Qt中計(jì)算一段程序的運(yùn)行時(shí)間:
#include <QTime>
QTime tmpTime;
tmpTime.start();
qDebug() << tmpTime.elapsed() << "ms";
給Qt工程生成的可執(zhí)行文件添加圖標(biāo)
1. ?找一個(gè)ico文件,該名為適當(dāng)?shù)摹H鏓XEICON.ico。?
2. ?手動(dòng)創(chuàng)建一個(gè)對(duì)應(yīng)的rc文件。如EXEICON.rc: IDI_ICON1 ICON DISCARDABLE "EXEICON.ico"?
3. ?將上面兩個(gè)文件放在當(dāng)前目錄,把HdssMap.rc加入工程在中。重新生成即可。
給Qt窗體添加圖標(biāo)
在main函數(shù)中:
?QApplication a(argc, argv);
?a.setWindowIcon(QIcon(":/DataManager/Resources/statics.png"));
7、中文輸出亂碼的解決方法:a、在main.cpp頭文件中添加?#include <QTextCodec>
? ?b、在main函數(shù)調(diào)用中 加入
QApplication a(argc, argv); QTextCodec::setCodecForTr(QTextCodec::codecForName("gbk"));//設(shè)置中文字體編碼 以后需要輸出中文的時(shí)候 寫成 tr("中文你好");即可? 比如
ui->textEdit->append(tr("pushbutton_3----時(shí)間")); 這樣輸出的就是正常的中文字符了
8、checkBox 選中狀態(tài)判斷,呵呵,自己想的,不知道大家怎么做
on_checkBox_clicked(){
? ? if(ui->checkBox->checkState())
????{
????? ? // 選中是state狀態(tài)為真,未選中為false ?
????}
}
9、可以將很多信號(hào)和單個(gè)的槽進(jìn)行連接,也可以將單個(gè)的信號(hào)和多個(gè)的槽進(jìn)行連接,甚至將一個(gè)信號(hào)和另一個(gè)信號(hào)進(jìn)行連接,這時(shí)無(wú)論第一個(gè)信號(hào)什么時(shí)候發(fā)射,系統(tǒng)都將立刻發(fā)射第二個(gè)信號(hào)。
? 如果存在多個(gè)槽與某個(gè)信號(hào)相關(guān)聯(lián),那么,當(dāng)這個(gè)信號(hào)被發(fā)射時(shí),這些槽將會(huì)一個(gè)接一個(gè)的執(zhí)行,但是他們執(zhí)行的順序?qū)?huì)是隨機(jī)的、不確定的,我們不能人為的指定那個(gè)先執(zhí)行,那個(gè)后執(zhí)行。
QObject::connect(sender,SIGNAL(signal),receiver,SLOT(slot));
比如:QObject::connect(pushButton,SIGNAL(clicked()),this,SLOT(dopushButton()));
10、類聲明里,SIGNALS沒有public、private、protected等屬性,SLOTS則有這3個(gè)屬性
轉(zhuǎn)載于:https://my.oschina.net/laopiao/blog/83916
總結(jié)
- 上一篇: Redis与Java - 实践
- 下一篇: Gerchberg–Saxton算法