Qt开发从开门到入门

首先是出现了一个"Cannot find file...... .pro."的问题,发现是由于路径中存在中文字符,于是剪切到另外一个目录下。

剪切过去后 构建时又出现了新的问题:

:: warning: Qmake does not support build directories below the source direct

经查找发现是pro.user文件的问题,该文件中会保存原来编译时的目录路径,所以在剪切过来以后需要将此文件删除再进行编译。然后成功弹出exe界面:

qt界面部分可以参考视频

大佬的视频

通过QMessageBox::information函数弹窗时,发现汉字出现乱码,如图所示

后来在main.cpp中添加了

//在头文件添加
#include<QTextCodec>

//在main()中添加
QTextCodec::setCodecForLocale(QTextCodec::codecForName("gb2312"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("gb2312"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("gb2312"));

解决了汉字乱码的问题(QT 4版本)。

qt 连接数据库,本次采用了sqllite数据库,开始使用mysql失败了,问题没有解决,sqllite就比较好用了,使用方法参考

ot开发中的sqlite数据库使用

弹出一个新窗口:

//比如弹出一个登录窗口,在上述步骤建立了login.h、login.cpp、login.ui

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "login.h"

void MainWindow::on_action_login_triggered()
{
    login *w = new login();
    w->show();
}

获取输入框内容并通过debug输出:

    //需要include <QDebug>

    QString username = ui->UsernameEdit->text();
    qDebug()<<"username is "<<username;
    QString password = ui->PasswordEdit->text();
    qDebug()<<"password is "<<password;

清除输入框内的内容和关闭窗口:

ui->lineEdit->clear();
this->close();

不同窗口间进行数据传输:(使用槽函数和信号,之前看了一些文章感觉写的太多了,其实挺简单的)



在窗口一的.h文件中定义接收函数

void receiveData(QString data);

在窗口二的.h文件中定义发送信号

signals:
    void sendData(QString data);

在窗口一跳转到窗口二函数中进行连接
void MainWindow::on_action_login_triggered()
{
    login *w = new login();
    connect(w,SIGNAL(sendData(QString)),this,SLOT(receiveData(QString)));//信号连接
    w->show();
}

在窗口一的.cpp文件中写接收函数
void MainWindow::receiveData(QString data)
{
    user = data;
}

在窗口二的.cpp文件中发送信号
  emit sendData(username);
就可以了

widget 设置:

ui->tableWidget->show();
    ui->tableWidget->setRowCount(20);
    ui->tableWidget->verticalHeader()->setVisible(false);//隐藏水平header
    ui->tableWidget->setColumnWidth(0,50);
    ui->tableWidget->setColumnWidth(1,70);
    ui->tableWidget->setColumnWidth(2,70);
    ui->tableWidget->setColumnWidth(3,200);
    ui->tableWidget->setColumnWidth(4,80);
    ui->tableWidget->setColumnWidth(5,190);
    ui->tableWidget->setColumnWidth(6,70);
    ui->tableWidget->setColumnWidth(7,70);
    ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
    ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
发布了125 篇原创文章 · 获赞 31 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/Fiverya/article/details/97628858
今日推荐