[Qt5] 使用Qt设计器绘制主窗口

实践代码: git clone https://github.com/dilexliu/learn_qt5.git

Step1: Qt设计器绘制窗口

保存会得到一个文件: mainwindow.ui

另外还需要把mainwindow.ui 的代码保存出来,操作:在Qt设计器中的菜单栏【窗体】->【查看代码】,把其中的代码保存为 ui_mainwindow.h

Step2: 手动添加代码

mainwindow.h

#pragma once

#include "ui_mainwindow.h"

class CMainWindow : public QMainWindow, public Ui_MainWindow
{
    Q_OBJECT
public:
    CMainWindow(QWidget* = 0);

};

mainwindow.cpp

#include <QtGui>
#include "mainwindow.h"

CMainWindow::CMainWindow(QWidget* parent) : QMainWindow(parent)
{
    this->setupUi(this);

    this->show();
}

main.cpp

#include <QtGui>
#include "mainwindow.h"

CMainWindow::CMainWindow(QWidget* parent) : QMainWindow(parent)
{
    this->setupUi(this);
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.0)
project(MainWindow)
# Find the QtWidgets library
find_package(Qt5Widgets)
link_libraries(Qt5::Widgets)

FILE(GLOB SC_FILES "*.cpp" "*.h")

add_executable(${PROJECT_NAME} WIN32 ${SC_FILES})

Step3:CMake创建VS工程后编译

会出现一些错误:

1>mainwindow.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall CMainWindow::metaObject(void)const " (?metaObject@CMainWindow@@UBEPBUQMetaObject@@XZ)
1>mainwindow.obj : error LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall CMainWindow::qt_metacast(char const *)" (?qt_metacast@CMainWindow@@UAEPAXPBD@Z)
1>mainwindow.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall CMainWindow::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@CMainWindow@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
1>E:\vc\qt\build\MainWindow\Debug\MainWindow.exe : fatal error LNK1120: 3 个无法解析的外部命令

Step4:解决问题  Qt下bin的moc生成moc_mainwindow.cpp

为了解决上面的错误,需要用到Qt\bin目录下的一个程序moc,通过它生成moc_mainwindow.cpp

如:

Step5:再编译

再通过cmake一下, 在VS加载工程配置后, 再编译, 就可以了

 

转载于:https://www.cnblogs.com/dilex/p/10952394.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值