C/C++ -- Gui编程 -- Qt库的使用 -- Qt5试用

时间:2023-03-08 15:48:07

1.头文件<QtGui>变成了<QtWidgets>

相应<QtGui/***>变成了<QtWidgets/***>

2.QTextCodec::setCodecForLocale还在,
但是QTextCodec::setCodecForTr和QTextCodec::setCodecForQStrings没了

QObject::tr("字符串")还能用,QString::QString("字符串")不能用了

最后,Qt疯了

-----main.cpp-----

 #include <QtWidgets/QApplication>
 #include <QtWidgets/QWidget>
 #include <QtGui>
 //#include <QTextCodec>
 //#include <QDebug>
 int main(int argc, char * argv[])
 {
     QApplication app(argc, argv);
 //    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
     QWidget wgt;

 //    wgt.setWindowTitle("上古卷轴5-天际Skyrim");
 //    wgt.setGeometry(200, 200, 300, 100);
     wgt.show();

 //    qDebug("窗体宽度%d 窗体高度%d\n", wgt.width(), wgt.height());
 //    qDebug()<<QObject::tr("窗体几何:")<<wgt.geometry()<<endl;
 //    qDebug()<<QObject::tr("窗体框架几何:")<<wgt.frameGeometry()<<endl;

     app.exec();
     ;
 }

C/C++ -- Gui编程 -- Qt库的使用 -- Qt5试用

总算想明白了,原来Qt5的工程文件必须加一句:greaterThan(QT_MAJOR_VERSION, 4) QT += widgets

 #--------------------------------------------
 #
 #----------2014.05.06手工编辑-----------------
 #
 #--------------------------------------------
 greaterThan(QT_MAJOR_VERSION, ) QT += widgets
 SOURCES += \
     main.cpp

Qt5使用注意事项:
1.Qt5的工程文件先加一句greaterThan(QT_MAJOR_VERSION, 4) QT += widget或者QT += widgets。
2.Qt5使用头文件的时候<QApplication>和<QtWidgets/QApplication>带不带抬头都行
3.Qt5的头文件<QtWidgets>大致相当于Qt4的<QtGui>
4.为了提高Qt5对Qt4的兼容性
工程文件使用greaterThan(QT_MAJOR_VERSION, 4) QT += widget
头文件使用时不要带抬头“QtWidgets/”

$%^&*最后的最后,不知道为什么,qDebug在Qt5中似乎没有输出。。。

调试模式:

Debugging starts
Debugging has finished

运行模式://”不能获取调试输出“

 Starting D:\work\qt5\build-Qt5Test-Desktop_Qt_5_2_1_MinGW_32bit-Release\release\Qt5Test.exe...
 Cannot retrieve debugging output.
 D:\work\qt5\build-Qt5Test-Desktop_Qt_5_2_1_MinGW_32bit-Release\release\Qt5Test.exe exited with code 

晕了,现在又有调试输出了。

不设置编码的情况下,Qt5运行和调试,控制台、窗体都不乱码

设置本地编码CP-936:QTextCodec::setCodecForLocale(QTextCodec::codecForName("cp936"));,同上

设置本地编码UTF-8,Qt5运行和调试,窗体不乱码,控制台乱码

所以说,Qt5默认已经解决了乱码问题