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中的一点小收获小总结,有可能有失误的地方,请拍砖!
QT学习小技巧的更多相关文章
- Python学习小技巧之列表项的排序
Python学习小技巧之列表项的排序 本文介绍的是关于Python列表项排序的相关内容,分享出来供大家参考学习,下面来看看详细的介绍: 典型代码1: data_list = [6, 9, 1, ...
- Qt开发之Hello Qt及学习小技巧
创建第一个Qt程序的简单流程 如果安装了andriod或ios的版本也会显示出来,这里只显示了桌面端的 一个项目文件代码结构如下: 如下图可直接编辑label里的文字内容: 运行结果:(快捷键ctrl ...
- QT学习小demo之LightMD(MarkDown编辑器)
很早之前就有了写一个类似Windows记事本的想法,加上最近也刚好在学编译原理,所以就想把两者结合起来,于是就打算结合MarkDown,开发一款MarkDown编辑器. 不过由于我之前一直使用的是Ja ...
- Qt开发经验小技巧81-90
Qt中的QColor对颜色封装的很完美,支持各种转换,比如rgb.hsb.cmy.hsl,对应的是toRgb.toHsv.toCmyk.toHsl,还支持透明度设置,颜色值还能转成16进制格式显示. ...
- Qt开发经验小技巧71-80
在我们使用QList.QStringList.QByteArray等链表或者数组的过程中,如果只需要取值,而不是赋值,强烈建议使用 at() 取值而不是 [] 操作符,在官方书籍<C++ GUI ...
- Qt开发经验小技巧61-70
很多人问Qt嵌入式平台用哪个好,这里统一回答(当前时间节点2018年):imx6+335x比较稳定,性能高就用RK3288 RK3399,便宜的话就用全志H3,玩一玩可以用树莓派香橙派. 对于大段的注 ...
- Qt开发经验小技巧41-50
如果使用sqlite数据库不想产生数据库文件,可以创建内存数据库. QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); ...
- Qt实用小技巧(转)
原博网址:http://www.cnblogs.com/feiyangqingyun/archive/2010/12/06/1898143.html 1.如果在窗体关闭前自行判断是否可关闭答:重新实现 ...
- Qt开发经验小技巧51-60
在某些http post数据的时候,如果采用的是&字符串连接的数据发送,中文解析乱码的话,需要将中文进行URL转码. QString content = "测试中文"; Q ...
随机推荐
- [上海] 携程 门票事业部 招聘.NET 架构师 2 名 - V2EX
[上海] 携程 门票事业部 招聘.NET 架构师 2 名 - V2EX [上海] 携程 门票事业部 招聘.NET 架构师 2 名
- Distinguishing Between Embedded and General-Purpose Computing
标题:嵌入式系统与通用计算机系统的区别 To understand what falls into the category of embedded computing ,it is instruct ...
- Girls and Boys(匈牙利)
Girls and Boys Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- EBS 数据库预克隆日志
ora02@[/u07/CCTEST02/db/tech_st/11.1.0/appsutil/scripts/CCTEST02_test01] $ T02_test01/StageDBTier_06 ...
- ibatis3.0调用Oracle的存储过程
直接上源码 一,oracle储存过程. create or replace procedure proc_get_th(i_hth in varchar2,o_ret out sys_refcurso ...
- QSplashScreen无法背景透明的解决办法(强制StyleSheet生效)
setWindowFlags(Qt::WindowStaysOnTopHint | Qt::SplashScreen | Qt::FramelessWindowHint); setAttribute( ...
- Sql 增加字段(有些只能在ORACLE中运行)
增加字段 alter table table_name add column_name varchar(200) 删除字段 ALTER TABLE table_NAME DROP COLUMN col ...
- [ExtJS5学习笔记]第十五节 Extjs5表格显示不友好?panel的frame属性在作怪
本文地址:http://blog.csdn.net/sushengmiyan/article/details/39057243 sencha官方API:http://docs.sencha.com/e ...
- TCP三次握手和四次挥手具体解释
三次握手:建立TCP须要三次握手才干建立, 先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源.Client端接收到ACK报文后也向Server段发生ACK ...
- android使用自己定义属性AttributeSet
这里为了演示使用自己定义变量,字体大小改用自己定义的属性. 首先要创建变量,创建了个values/attrs.xml文件,文件名称随意,可是要在values文件夹下: <?xml version ...