QT学习小技巧
原地址:http://blog.csdn.net/ykm0722/article/details/6947250
转载:
分享在比赛中写代码时,发现的几个对写程序很有用的小段代码,虽小但是在我的软件中帮了我很大忙。这些代码可以在程序和软件开发中直接使用,会为你的程序开发介绍很多麻烦。仅是个人之见,如有不符之处,请拍砖。
第一段:主要的功能是解决中文显示问题,这三段有时一段即可,有时需要三段都得写。为了省事,我一般是三段一起写,我们队在软件开发中把这三段放在了main函数中。
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));实例:
int main(int argc, char *argv[])
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
QApplication app(argc, argv);
setup setupwindow;
setupwindow.show();
return app.exec();
}
这样在软件开发过程,和程序编写过程中几乎所有的乱码问题全部可以不用担心了,也不必在花心思去专门注意了(我在软件开发中百试百灵,只是个人经验)。
第二段:主要用来解决图片、文件等默认命名重复问题。我们队在开发中考虑用时间作为文件的默认名字,某一时刻的时间是绝对不会重复的,所以命名的文件也绝对不会重复,也绝不会发生覆盖导致文件、图片问题
实例应用:
QString str = QTime().currentTime().toString();
picname= QString(tr("IMG%1%2%3"))
.arg(QDate().currentDate().year()%100)
.arg(QDate().currentDate().month())
.arg(QDate().currentDate().day(),2)
+str.mid(0,2)+str.mid(3,2)+str.mid(6,2)+".jpg";
fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
"/home/meego/Pictures/"+picname,
tr("Images (*.jpg *.png *.xpm *.jpg)"));
第三段:为软件界面设计背景图片
代码:
QPalette palette; palette.setBrush(QPalette::Background,QBrush(QPixmap(":/img/butterflynew.jpg")));
this->setPalette(palette);
只需对":/img/butterflynew.jpg" 进行简单的修改和替换即可使你的软件或程序界面变成你所想要的效果。
还有就是在软件设计时我们采用两种方式,一种是纯粹代码完成,另一种是控件的拖放加适当的代码添加。在这个过程中,我们发现在代码编写和添加中,纯粹的控件拖放可以帮我们完成很多工作。具体实现方法如下:
新建一个QT GUI Application 建完后会默认的程序组成如下图所示:
(由于网速等原因图片一直加不进来,创建时只要一直点默认的按钮即可)
我们可以在UI文件中进行控件的拖放和组装。然后点击编译,可以不用运行,但是若要看效果可以运行下。回到mainwindow.cpp看头文件会看到#include "ui_mainwindow.h"将光标放到#include "ui_mainwindow.h" 中间,然后点击F2,程序界面会跳转到ui_mainwindow.h中,在这里你可以看到你所拖动的控件如何用纯的代码去实现。这一方法,在对控件的位置定义中节省了很多时间。
以上是我在学习QT中的一点小收获小总结,有可能有失误的地方,请拍砖!