QT 笔记

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、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值