DAYTWO
中文乱码问题:
VS + Qt环境下解决中文乱码问题_vs qt 乱码_卧_听风雨的博客-CSDN博客cc
参考上博客
ui不允许使用不完整的类型???
个人感觉是QT界面设计有中文,导致乱码,我在网上查找到加上头文件
#include<fstream> 可解决问题。
QT编码格式为UTF-8(Unicode字符集的一种编码方式),那么解决乱码另一种简便方式便是设置默认编码格式为 UTF-8或Unicode。方法如此文所述Visual Studio 设置默认编码格式为 UTF-8 或 GB2312-80 与文件没有高级保存选项怎么显示_Come_code的博客-CSDN博客
用改变编码的方法,那么不用再考虑中文的乱码修改问题,实现QT与vs编译的兼容。
资源文件:
可以在vs中单独再创建资源文件,再在cpp文件中指定路径进行显示。
ui->actionSaveAs->setIcon(QIcon (QString::fromLocal8Bit(":/MyWindow1/Image/butterfly1.png")));
///MyWindow1是前缀名
也可以在vs中指定qt路径,在qt中便可使用该资源文件进行布局设置,vs编译也可见。如果不在vs中指定路径,只在qt中使用自创路径,vs可能不显示。
对话框:
//模态对话窗,显示窗口后其他窗口无法操作 阻塞,当对话窗关闭后,才会向下执行
QDialog dig(this);
dig.exec();
//非模态对话窗,显示窗口消失 非阻塞
//QDialog dig(this);
//dig.show(); //非模态对话窗,显示窗口消失 非阻塞,但一下就消失不符合预期
QDialog *dig = new QDialog(this);//定义指针,按下按钮后新创建一个QDialog内存空间,
//当住窗口关闭时,才会析构,但是每按一次,出新一个新窗口,就多创造了一个内存空间
//解决方法1.定义类成员变量,当对话窗关闭时就析构,但是比较麻烦2.定义对话窗属性
dig->setAttribute(Qt::WA_DeleteOnClose);//宏记不住可以记值55
dig->show();
颜色对话窗和文字对话窗
//auto color = QColorDialog::getColor();
//qDebug() << color.red() << color.green() << color.blue();
bool yes;
QFont font = QFontDialog::getFont(&yes, QFont("宋体"), this, ",My字体设置");
if (yes) {
qDebug() << font.family() << font.italic() << font.pointSize() <<font.bold();
}
QT构造函数的析构问题
在qt构造函数中创建对象应尽可能多的使用指针,否则对象创建在构造函数中,创造完成就被释放了,一些有动画和连续动作的函数就无法显示。如下例
QMovie* movie = new QMovie("://Controls/Image/mario.gif");
ui->labelMovie->setMovie(movie);
movie->start();
创建的最左侧gif 图存在并运行。
QMovie movie("://Controls/Image/mario.gif");
ui->labelMovie->setMovie(&movie);
movie.start();
最左侧的gif图被析构消失。
但是具体原因还是不是很清楚,