最近接了份外快,要求使用vs+qt开发一个简单的数据管理系统。qt开发使用的语言是c++,然而c++只是大一第二学期有教过而已,基本也差不多忘光了,废话不多说,讲下今天遇到的问题吧

如标题所说,窗体跳转的问题。

首先讲下qt开发环境的问题,qt开发有两种方式,一种是使用Qt Creator开发,这种可以在Linux系统下实现开发。还有一种是使用visual studio开发,这种只能在Windows系统下进行开发,使用vs的话还需要我们自行安装插件到vs上去。而且随着了解加深,发现其实用vs开发很麻烦,因为不同版本对qt的一些函数会有不同的改变。

比如在我们.cpp中修改窗体中label为中文文本时,出现的是一堆乱码,这需要我们对QString进行定义。之前查到在使用Qt Creator时可以使用以下代码解决该问题

//Set Encode

QTextCodec::setCodecForTr(QTextCodec::codecForName(“system”));

QTextCodec::setCodecForCStrings(QTextCodec::codecForName(“system”));

QTextCodec::setCodecForLocale(QTextCodec::codecForName(“system”));

结果发现在vs2010时这三个函数是都有的,而在vs2012中,第二跟第三两个函数已经没有了。。然而到了vs2013又重新有了,这就是使用vs的麻烦之处。

后来又在一些问题上,比如添加信号槽,vs下跟qt Creator下是两种写法,然后今天完成登录界面要跳转到主界面时,去网上找到的基本都是在qt Creator下怎么跳转,然而在vs下不能用,最后找到一篇接近的,才实现了这个功能。

下面贴上详细代码

首先新建一个窗体界面

第一个窗体界面是在创建项目时自动给我们添加的就不贴上去了

在FormFiles文件夹里新建一个ui文件,这里名为home.ui;

然后右键编译,给其生成ui_Home.h文件

接着在Healer Files文件夹新建home.h头文件

#ifndef Home_H
#define Home_H #include <QtWidgets/QWidget>
#include "ui_home.h"
#include<QtSql> class Home : public QWidget
{
Q_OBJECT public:
Home(QWidget *parent = 0);
~Home();
private:
Ui::Home ui;
QSqlDatabase db;
private slots:
};
#endif // MYCLASS_H

Source Files文件夹新建home.cpp

#include "home.h"
#include <QMessageBox>
#include<modelInfo.h>
Home::Home(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
} Home::~Home()
{ }

完成后对第一个窗体login的头文件进行修改如下

login.h

#ifndef MYCLASS_H
#define MYCLASS_H #include <QtWidgets/QWidget>
#include "ui_login.h"
#include<QtSql>
#include"home.h" //包含新窗体头文件 class Login : public QWidget
{
Q_OBJECT public:
Login(QWidget *parent = 0);
~Login();
bool connectSql();
private:
Ui::Login ui;
Home *home;//这里添加了新窗体定义
QSqlDatabase db;
private slots:
void Btn_OpenClick();
};
#endif // MYCLASS_H

在login.cpp里跳转到新窗体代码段如下

#include "home.h"//需要包含头文件,以下代码段实现跳转,写在相应的信号槽中即可
this->hide();
home = new Home();
home->show();

初学Qt——vs2012开发环境下的窗体跳转的更多相关文章

  1. 【应用笔记】【AN005】Qt开发环境下基于RS485的4-20mA电流采集

    简介 4-20mA电流环具有广泛的应用前景,在许多行业中都发挥着重要作用.本文主要介绍在Qt开发环境下基于RS485实现4-20mA电流采集,实现WINDOWS平台对数据的采集.分析及显示. 系统组成 ...

  2. arm-linux下qt + opencv开发环境的搭建(Altera DE1 Soc)

    arm-linux-gnueabihf-gcc下载 qt下载 arm-linux下qt + opencv开发环境的搭建(Altera DE1 Soc) Ubuntu 16.04 安装QT arm嵌入式 ...

  3. Qt官方开发环境生成的exe发布方式--使用windeployqt(windeployqt是单独的程序,放在低版本qt4目录下也可以运行的)

    Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行.因此 Qt 官方开发环境里自带了一个 ...

  4. 转:Qt 嵌入式开发环境搭建

    地址: http://www.cnblogs.com/lishixian/articles/3013897.html         作者:lsx_007 这里主要是记录了自己在搭建嵌入式开发环境时阅 ...

  5. QT在linux环境下读取和设置系统时间(通过system来直接调用Linux命令,注意权限问题)

    QT在Linux环境下读取和设置系统时间 本文博客链接:http://blog.csdn.NET/jdh99,作者:jdh,转载请注明. 环境: 主机:Fedora12 开发软件:QT 读取系统时间 ...

  6. iOS系统提供开发环境下命令行编译工具:xcodebuild

    iOS系统提供开发环境下命令行编译工具:xcodebuild[3] xcodebuild 在介绍xcodebuild之前,需要先弄清楚一些在XCode环境下的一些概念[4]: Workspace:简单 ...

  7. spark最新源码下载并导入到开发环境下助推高质量代码(Scala IDEA for Eclipse和IntelliJ IDEA皆适用)(以spark2.2.0源码包为例)(图文详解)

    不多说,直接上干货! 前言   其实啊,无论你是初学者还是具备了有一定spark编程经验,都需要对spark源码足够重视起来. 本人,肺腑之己见,想要成为大数据的大牛和顶尖专家,多结合源码和操练编程. ...

  8. angular 4 开发环境下打包文件过大

    angular 4本地开发环境下,ng server -- port 8080 -o 之后在在浏览器中查看数据请求,其中vendor.bundle.js有8.3mb,而整个传输数据大小为16.3mb ...

  9. Qt官方开发环境生成的exe发布方式

    本来想自己写一个打包程序的文章了,但是我发现了宝贝,在这里,大神写的比我牛逼的多了,这里做一下搬运工 一是为了方便大家 二是为了以后方便自己找 原文链接:http://tieba.baidu.com/ ...

随机推荐

  1. tensorflow(三)

    1.placeholder 一个数据占位符,用于在构建一个算法时留出一个位置,然后在run时填入数据. x = tf.placeholder(tf.float32) y = tf.placeholde ...

  2. drf框架的解析模块-异常处理模块-响应模块-序列化模块

    解析模块 为什么要配置解析模块 (1).drf给我们通过了多种解析数据包方式的解析类. (2).我们可以通过配置来控制前台提交的那些格式的数据台解析,那些数据不解析. (3).全局配置就是针对一个视图 ...

  3. bzoj5104 Fib数列(BSGS+二次剩余)

    快AFO了才第一次写二次剩余的题…… 显然应该将Fn写成通项公式(具体是什么写起来不方便而且大家也都知道),设t=((1+√5)/2)n,T=√5N,然后可以得到t-(-1)t/t=√5N,两边同时乘 ...

  4. nginx应用geoip模块,实现不同地区访问不同页面的需求(实践版)

    https://www.52os.net/articles/configure-nginx-using-geoip-allow-whitelist.html       搞了几天没有搞定,这篇文章一下 ...

  5. TCP\IP协议簇-各层主要协议帧格式

    本文只是对各协议的概要,详细请参考rfc文件. 官方下载地址:https://tools.ietf.org/rfc/index rfc中文:http://man.chinaunix.net/devel ...

  6. JavaScript--DOM,BOM

    前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我们需要继续学习BOM和DO ...

  7. 对kotlin和java中的synchronized的浅谈

    synchronized在java中是一个关键字,但是在kotlin中是一个内联函数.假如分别在java和kotlin代码锁住同一个对象,会发生什么呢,今天写了代码试了试.首先定义people类 12 ...

  8. Leetcode13_罗马数字转整数

    题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1. ...

  9. 2010提高组-C]关押罪犯(扩展域并查集

    题:https://www.cometoj.com/problem/0073 #include<bits/stdc++.h> using namespace std; ; struct n ...

  10. 识别ios系统设备并获取版本号

    let isIOS = userAgent.toLowerCase().indexOf("like mac os x") > 0; //ios终端 if (isIOS) { ...