网站建设费用资本化,为企业设计网站,wordpress 国内视频教程,设计师网名创意利用qt的model view来显示数据表userudps里的数据 用了一个label 两个combox和一个tableview#xff0c;实现如下效果#xff1a; 我这里用到是mysql数据库#xff0c;一般配置mysql数据库就两种有驱动或者没驱动#xff0c;有的话把mysql的bin目录的libmysql.dll复制到q…利用qt的model view来显示数据表userudps里的数据 用了一个label 两个combox和一个tableview实现如下效果 我这里用到是mysql数据库一般配置mysql数据库就两种有驱动或者没驱动有的话把mysql的bin目录的libmysql.dll复制到qt编译器的bin目录下没有的话还得装qt的源码然后编译出mysql的驱动再把mysql的bin目录的libmysql.dll复制到qt编译器的bin目录下。 main.cpp 我这里用了日志显示一些错误信息
#include widget.h
#include QDebug
#include QApplication
#include QFile
#include QTextStream
#include QDateTimevoid logMessage(QtMsgType type, const QMessageLogContext context, const QString msg)
{// 获取当前时间和日期QDateTime currentDateTime QDateTime::currentDateTime();// 打开日志文件追加模式QFile file(log.txt);if (!file.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text)) {qDebug() Failed to open log file.;return;}// 创建文本流并写入日志信息QTextStream stream(file);switch (type) {case QtDebugMsg:qDebug().noquote() msg; // 输出到控制台stream [ currentDateTime.toString(yyyy-MM-dd hh:mm:ss) ] [DEBUG] ;break;case QtInfoMsg:qInfo().noquote() msg; // 输出到控制台stream [ currentDateTime.toString(yyyy-MM-dd hh:mm:ss) ] [INFO] ;break;case QtWarningMsg:qWarning().noquote() msg; // 输出到控制台stream [ currentDateTime.toString(yyyy-MM-dd hh:mm:ss) ] [WARNING] ;break;case QtCriticalMsg:qCritical().noquote() msg; // 输出到控制台stream [ currentDateTime.toString(yyyy-MM-dd hh:mm:ss) ] [CRITICAL] ;break;case QtFatalMsg:qFatal(%s, msg.toUtf8().constData());break;default:break;}stream msg \n;// 关闭日志文件file.close();
}
int main(int argc, char *argv[])
{QApplication a(argc, argv);qInstallMessageHandler(logMessage);Widget w;w.show();return a.exec();
}
widget.cpp
#include widget.h
#include ui_widget.h
#include QDebugWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui-setupUi(this);qsqmtableModelnew QSqlQueryModel(this);qsqmcomboxModelnew QSqlQueryModel(this);qsqmcombox2Modelnew QSqlQueryModel(this);QSqlDatabase qsdSqlDataQSqlDatabase::addDatabase(QMYSQL);qsdSqlData.setHostName(127.0.0.1); //数据库服务器IPqsdSqlData.setUserName(root); //数据库用户名qsdSqlData.setPassword(123456); //密码qsdSqlData.setDatabaseName(test); //使用哪个数据库if (qsdSqlData.open() false) {qDebug()数据库连接失败;return;}else{qDebug()数据库连接成功;}QString sqlselectselect* from userudps;qsqmtableModel-setQuery(sqlselect);ui-tableView-setModel(qsqmtableModel);sqlselectselect user_send from userudps group by user_send;qsqmcomboxModel-setQuery(sqlselect);ui-comboBoxrow-setModel(qsqmcomboxModel);ui-comboBoxrow-setCurrentIndex(0);}Widget::~Widget()
{delete ui;
}void Widget::on_comboBoxrow_currentIndexChanged(const QString arg1)
{QString sqlQString(select user_recv from userudps where user_send%1).arg(arg1);qsqmcombox2Model-setQuery(sql);ui-comboBoxcol-setModel(qsqmcombox2Model);ui-comboBoxcol-setCurrentIndex(0);
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include QWidget
#include QSqlQueryModel
#include QSqlDatabaseQT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();
private slots:void on_comboBoxrow_currentIndexChanged(const QString arg1);private:Ui::Widget *ui;QSqlQueryModel* qsqmtableModelnullptr;QSqlQueryModel* qsqmcomboxModelnullptr;QSqlQueryModel* qsqmcombox2Modelnullptr;
};
#endif // WIDGET_H