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 *)" (??0MyWidget@@QAE@PAVQWidget@@@Z) referenced in function "public: __thiscall MainWindow::MainWindow(class QWidget *)" (??0MainWindow@@QAE@PAVQWidget@@@Z)

出现这样的错误一般是声明了函数没有实现其定义,比如这里提示的是没有自定义类MyWidget的实现函数。如果你已经检查了确定定义是有的,比如我这个就确实有定义了的,那就把该项目编译出的build debug文件夹给删除掉,再重新编译,注意是编译出来的整个文件夹一起删,而不是clean清除后重新构建。


接下来应该没有什么错误,有的话欢迎留言讨论交流,最终的实现效果就是这样


点击登录到主界面这个窗口会消失并弹出一个新的窗口


继续点击New Window 会弹出一个新的窗口且主窗口并不消失


好了,今天的Qt学习就到此为止了,再去看看Harris 角点检测吐舌头


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值