您的位置:首页 > 编程语言 > Qt开发

QT 笔记

2015-09-23 20:35 323 查看
1、“文件“Makefile”的修改时间在将来2.” 你出现这个问题是因为你在搭建外部共享目录内搭建开发环境,这个共享目录的文件系统不支持软链接的建立。请使用linux用户目录(如果你用samba服务也不会有这个问题);

2、属性 Qt::Tool   setWindowFlags( Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::Tool )
这个属性很关键,当没有这个属性的时候,新的窗口会抢占焦点? 也不能这么说,后果是造成主窗口的编辑况无法编辑;

3、

4、

5、

6、

7、

8、

9、

10、

11、

12、

13、

2、在windows下调试时,界面显示乱码(或本该相等的两个字符串变量比较时不等),可将涉及到的文件都剪切掉,并设置为GB2312编码格式,然后粘贴到原文件;

4、QT窗口上的控件布局时与窗口关联(将小块的排列好后,选中整个窗口按横向或纵向组合)的话,在代码中调整控件的大小就可以调整窗口的大小;

5、在已布局好了的窗口中加入其它控件时,可以先在该位置插入Layouts控件,再将该位置的控件和需要增加的控件拖入到插入的Layouts控件中;

7、4.6.3版本的工程在windows和ubuntu虚拟机都不能运行,只能在仪器上运行;

8、编译的严格性依此为:仪器(4.6.3)>ubuntu虚拟机(7.4.0)>win(7.4.0);

9、编译连接时出现“the process"/usr/bin/make"exited with code %2”或“make:***[moc_main.cpp] 错误1”,将先前的编译文件全都删除,重新添加编译的版本,查看编译链接的文件夹路径是否正常(没有空格或中文字符以及其它不能识别的字符,文件夹路径是不是红色显示。是的话修改路径,直到不是红色显示)。

10、QT编译时出现:Qmake does not support build directories below the source directory。怎么解决?
可以先将前面的版本都删掉,重新新建后编译。Qt有记忆功能,就是你之前做了什么,即使你修改了,有时候也还是按照改之前的路径去编译。所以,最好的办法是新建一个工程文件夹,然后把源文件放到里面。不要直接修改就重新编译。

11、Windows下采用GB2312编码,在main函数中增加“QApplication::addLibraryPath("./plugins");”语句解决乱码的bug;

12、全局变量不但需要在头文件中声明,也需要在源文件中再声明一次,具体可参考SY7l的源代码;

13、QT翻译:在QT的安装目录下找到..\qt\bin\lupdate,在win的运行窗口,将lupdate所在的目录改为当前目录(cd ......),输入命令:lupdate 路径\工程名.pro -ts 路径\*.ts(输出ts文件的绝对路径)。Linux系统的的命令为:./lupdate 路径\工程名.pro -ts 路径\*.ts(输出ts文件的绝对路径)(在win下会出现界面上的可以翻译成功,而代码里的却失败的。在Linux(ubuntu)下都会翻译成功的)。如果是将中文翻译为英文的话,输入命令为:lupdate
路径\工程名.pro -codecfortr utf-8 -ts 路径\*.ts(输出ts文件的绝对路径)(先在QT里将各个文件的编码改为UTF-8后保存,也可以不用的)。最后用..\qt\bin\linguist打开翻译即可。

注意要将QTranslator *translator设为全局变量,如果存在几个窗口同时显示时,需要在相应的类中加入如下代码:

void DlgMain::changeEvent(QEvent *e) //当执行qApp->installTranslator(&translator)语句时,程序当中所有的QDialog(或QWidget)以及其子类都会接受到QEvent::LanguageChange这个信号的

{  

    QDialog::changeEvent(e);  

    switch (e->type())  {  

    case QEvent::LanguageChange: //就是这个信号  

        ui->retranslateUi(this); //在此处刷新语言的(更新界面的语言)

        break;  

    default:  

        break;  

    }  

}

待翻译的短语中不能含有“\r”字符,否则会造成不能配匹,翻译失败;经过lupdate生成的ts文件是xml标准存储的,可以将“<message>”修改为“<message utf8="true">”来改变源文与程序代码中的文本取得一致的编码;

14、VMware虚拟机弹出“VMware Workstation unrecoverable error: (mks)”异常窗口,无法启动时,删除虚拟机所在目录下扩展名为“vmem”的文件,并做好其备份;

15、当只需要改变当前QDialog的背景图,而不需要改变当前QDialog上子控件的背景图时,可用QDialog{/*样式内容*/}将样式代码包含起来。而只含有样式内容,没有指明针对的控件类型时,则其子控件都是该样式。其它的也可依此类推;

16、“QProcess::execute()”为阻塞式,“QProcess::startDetached()”为非阻塞式;

如果用“QProcess::start()”启动另一个程序的话,另一个程序不能通过串口打印,也不能调用其它硬件(网卡)驱动,用“QProcess::execute()”的话就可以,没测试过“QProcess::startDetached()”;

可通过“QProcess::execute("Killall SY7L")”或“QProcess::execute("Killall -HUP SY7L")”杀死指定名字的进程;

17、调用子类的父类的方法,该子类为protected继承的父类,会出现类似于这样的错误提示“error: 'bool QThread::isFinished() const' is inaccessible”;

18、同一项目的release和debug的输出在同一目录时,执行全部重新编译还是会出现错误,此时应将该文件夹下的Makefile文件删除后再执行全部重新编译命令;

19、QImage和QPixmap绘图效率对比:嵌入式主机绘制桩长100m四剖面的灰度图,QImage为11.2秒,QPixmap为8.3秒;Ubuntu虚拟机系统绘制桩长100m四剖面的灰度图,QImage为0.699秒,QPixmap为6.76秒

20、

21、
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  QT 开发