转眼间工作已经三个月了。。。实习期也已经满了。。在这三个月中 对qt的学习遇到了很多问题 也解决了很多问题。。。也留下了一些现在的未解之谜。
在工作中关于qt的一些东西也需要进行一些记录:
QT Creator对大于带有两个空格的目录和中文命名的目录不支持!! 究其原因 应该是qmake对带有空格的目录和中文命名的目录不支持!!
1:在接触qt的开始 由于工程命名的问题 导致的编译错误:
报错的语句:Cannot find file: e:\qtcode\中文测试\中文测试.pro.
找不到pro文件。。
2:任务管理器里面的cclplus.exe是gcc编译器中的c++编译程序,ccl是c编译程序
3:
const_cast
用法:const_cast<type_id> (expression)
该运算符用来修改类型的const或volatile属性。除了const 或volatile修饰之外, type_id和expression的类型是一样的。
一、常量指针被转化成非常量指针,并且仍然指向原来的对象;
二、常量引用被转换成非常量引用,并且仍然指向原来的对象;
三、常量对象被转换成非常量对象。
忘记了上面是什么时候进行的记录。。。。
4:
volatile
volatile
就象大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。
5:
使用信号与槽的类在类的声明中都必须加上Q_OBJECT宏,表示使用元对象系统,Q_OBJECT列出元对象的声明、类名、属性函数、字符串翻译函数等。在这里 如果开始添加了Q_OBJECT然后删除 或者是手动添加的 需要将项目里面的debug文件里面的 和Makefile删除掉 进行重新编译。。否则qt creator编辑会不通过。
6:
设置背景图片:
QImage _image; _image.load("images/background.jpg");
setAutoFillBackground(true); // 这个属性一定要设置
QPalette pal(palette());
pal.setBrush(QPalette::Window,
QBrush(_image.scaled(size(), Qt::IgnoreAspectRatio,
Qt::SmoothTransformation)));
setPalette(pal);
。
7: 按钮点击没有虚线框
setFocusPolicy(Qt::NoFocus); 按钮点击没有虚线框 使用这个是因为工作中由于美化的原因需要把点击按钮后出现了按钮的虚线 进行删去掉。
8:根据控件的大小载入图片 image为一个控件 忘记了是QLabel 还是QPushButton了
this->image->setPixmap(_image);
this->image->setScaledContents(true); 载入图片根据控件的大小载入
9:
当一个类直接或间接继承自QObject时,你总是必须使用Q_OBJECT宏。该宏定义了几个用于实现信号-槽机制的函数。不幸的是,如果在继承自QObject的类定义中漏掉了Q_OBJECT宏,编译器和连接器都不会报告错误。结果是,Qt将仍然不知道这个类的信号和槽,但在运行时相应的连接将无法工作。
当执行带有调试信息的已编译程序时,将会发出运行时警告:试图访问未知的信号或槽。错误消息如下:
Object::connect: No such slot QObject::decChanged(QString)
10:快速美化qt界面
qApp>setStyle(new QPlastiqueStyle); //在window desktop中main函数中使用这句话会让界面快速的变得好看。