初学Qt——vs2012开发环境下的窗体跳转

来源:互联网 发布:vb杨辉三角形 编辑:程序博客网 时间:2024/05/21 10:38

最近接了份外快,要求使用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_OBJECTpublic:    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_OBJECTpublic:    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();
0 0
原创粉丝点击