Qt基础(二)编写Qt多窗口程序遇到的问题
刚刚写完Qt的安装外加上它的第一个helloworld程序,其中的图标大小就折腾了我好久,而第二个多窗口更是让我苦不堪言,还是基础太薄弱了,心酸。
还是按照http://www.qter.org/portal.php?mod=view&aid=27的教程一步步来。
重点还是说说我遇到的问题,我没有那么多时间一步步贴出来,肯定也没别人写得好。
一步步下来,好的,到了这一步
使用代码设置显示文本
1.按下Ctrl+2快捷键或者单击QtCreator左侧的“编辑”按钮进入编辑模式,然后双击mainwindow.cpp文件对其进行编辑。在构造函数MainWindow()中添加一行代码:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->pushButton->setText("新窗口"); //将界面上按钮的显示文本更改为“新窗口”
}
一句简简单单的代码竟然说我编译不通过,并且错误的方式还挺奇怪
刚开始我还一直天真的以为是语法的错误,盯了半天也没发现任何问题
后面百度我才知道就是我第一篇博客所提到的编码问题,也是我第一篇为什么要把那一段比较加上去
编码的问题,QT5的Qstring默认是UTF8格式,QT5极力推介把源码用UTF8格式存储。 但是MSVC只支持带BOM的UTF8格式,qmake不支持带BOM的UTF8格式,逼我只能用GBK么。这样的话,用qt5,每次都要Qstring::fromLocal8bit(“我是中国人”);况且就算BOM问题解决了,源代码是UTF8了。MSVC的执行编码也是GBK。
我们只需用Sublime编辑器打开该文件,然后以UTF-8 with BOOM 保存(notepad++也可以)
返回Qt会提示你文档在外面被修改,点击yes to all 就好了 ,然后再次点击运行按钮,你会发现
竟然还是乱码了,但是至少是出来了,不管了,我不想再去折腾了,反正用英文还舒服一些,我直接用 NEW Window 代替汉字新窗口
继续在后面的有一步运行过程中出现了这样的错误,(但是第二次重头再来却没有出现???)
不要紧,就是面的错误外加解决方法(亲测有效)
QT中编译出现link2019错误:mainwindow.obj:-1: error: LNK2019: unresolved external symbol "public: __thiscall MyWidget::MyWidget(class QWidget *)" (aaa@qq.com@aaa@qq.com@@@Z) referenced in function "public: __thiscall MainWindow::MainWindow(class
QWidget *)" (aaa@qq.com@aaa@qq.com@@@Z)
出现这样的错误一般是声明了函数没有实现其定义,比如这里提示的是没有自定义类MyWidget的实现函数。如果你已经检查了确定定义是有的,比如我这个就确实有定义了的,那就把该项目编译出的build debug文件夹给删除掉,再重新编译,注意是编译出来的整个文件夹一起删,而不是clean清除后重新构建。
接下来应该没有什么错误,有的话欢迎留言讨论交流,最终的实现效果就是这样
点击登录到主界面这个窗口会消失并弹出一个新的窗口
继续点击New Window 会弹出一个新的窗口且主窗口并不消失
好了,今天的Qt学习就到此为止了,再去看看Harris 角点检测
上一篇: JInternalFrame的学习
下一篇: 3