实践代码: 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工程后编译

会出现一些错误:

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

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

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

如:

Step5:再编译

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

[Qt5] 使用Qt设计器绘制主窗口的更多相关文章

  1. qt设计器中使用自定义控件

    当qt设计器中的控件不能满足需要时,这时就要自定义控件.然后再在qt设计器中使用. 在qt设计器中使用自定义控件时,可以用提升. 从控件派生出新的类: 然后在qt设计器中右键需要提升的控件: 填入提升 ...

  2. Qt实现基本QMainWindow主窗口程序

    这个实验用Qt实现基本QMainWindow主窗口 先上实验效果图    打开一个文件,读取文件类容 详细步骤: 1.打开Qt creator新建MainWindow工程 右键工程名添加新文件,mai ...

  3. Qt设计器中设置border-image注意问题

    Qt版本4.8.5,Windows7操作系统,在Qt设计师中通过样式表设计设置widget的border-image属性,debug版本编译会正常显示,但是release版本编译运行就不显示,把图片格 ...

  4. 一张图入门QT设计器

    哈哈哈,这个名字听起来就是骗阅读量的.

  5. .NET创建宿主设计器--DesignHost、DesignSurface.

    一个窗口在运行时,是这样的: 但是,在设计时,却远比这复杂的多,它需要一个设计器对象:它仅存在于设计时,并连接到运行时存在的对象.   宿主容器 我们可以看到每个窗体和按钮均有与之相关的设计器.这两个 ...

  6. Qt笔记之使用设计器自定义窗口标题栏

    1.在窗口显示之前,设置WindowFlags为FramelessWindowHint,以产生一个没有边界的窗口 例如 Widget::Widget(QWidget *parent) : QWidge ...

  7. Qt编写自定义控件属性设计器

    以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用场景需 ...

  8. Qt编写控件属性设计器10-导出xml

    一.前言 能够导出控件布局和属性设置数据到xml文件或者其他文件,也是一个非常实用的功能,类似于QtDesigner中把页面设计好以后生成的.ui结尾的文件,其实就是xml文件,按照约定的规则存储好控 ...

  9. Qt编写控件属性设计器12-用户属性

    一.前言 用户属性是后面新增加的一个功能,自定义控件如果采用的Q_PROPERTY修饰的属性,会自动识别到属性栏中,这个一般称为控件属性,在组态设计软件中,光有控件本身的控件属性还是不够的,毕竟这些属 ...

随机推荐

  1. PHP转换oracle数据库的date类型

    今天圣诞节啊,圣诞节快乐啊! 最近遇到一个很纠结的事,就是我在plsql里面查的是这样的,很正常, 但是我用程序查出来就是这样的,啊啊啊,真是崩溃啊 但是我传数据需要上面那种格式,而且我对oracle ...

  2. JSON parse error: default constructor not found. class java.time.YearMonth; nested exception is com.alibaba.fastjson.JSONException: default constructor not found. class java.time.YearMonth

    java8新出的YearMonth可以方便的用来表示某个月.我的项目中使用springmvc来接收YearMonth类型的数据时发现 x-www-from-urlencoded 格式的数据可以使用&q ...

  3. Json日期格式化,出去返回的T

    第一种办法:前端JS转换: //格式化显示json日期格式 function showDate(jsonDate) { var date = new Date(jsonDate); var forma ...

  4. 从头学pytorch(五) 多层感知机及其实现

    多层感知机 上图所示的多层感知机中,输入和输出个数分别为4和3,中间的隐藏层中包含了5个隐藏单元(hidden unit).由于输入层不涉及计算,图3.3中的多层感知机的层数为2.由图3.3可见,隐藏 ...

  5. Python 爬取 热词并进行分类数据分析-[App制作]

    日期:2020.02.14 博客期:154 星期五 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

  6. ubuntu中数据迁移的时候出现ImportError错误

    今天在Flask框架中使用数据库迁移的时候出现了如下错误: ImportError: libmysqlclient.so.20: cannot open shared object file: No ...

  7. mysql5.7修改root密码

    use mysql; update mysql.user set authentication_string=password('123456') where user='root'; flush p ...

  8. 《梳理业务的三个难点》---创业学习---训练营第二课---HHR---

    一,<开始学习> 1,融资的第一步:把业务一块一块的梳理清楚. 2,预热思考题: (1)投资人会问能做多大,天花板怎么算?你的答案可以得到大家的认同吗?(四种方法,直接引用,自顶向下,自底 ...

  9. Python中的lambda函数介绍

    Lambda函数,即Lambda 表达式(lambda expression),是一个匿名函数(不存在函数名的函数),Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lam ...

  10. ubuntu 允许root用户登录到ssh

    ubuntu的系统太太太麻烦了,我喜欢centos,但是还是要用ubuntu做东西,讨厌,装完系统以后,因为他不让你用root,我新建了一个wqz的用户名. 1.首先更新root的密码 sudo pa ...