在Qt中使用单选按钮选择显示数据库值?

时间:2013-02-12 11:41:23

标签: qt qt-creator

我想在Qt GUI中通过单选按钮选择显示一些数据库行值。如何实现这一目标?这可以使用foreach循环来完成我猜。我已经研究了以下几个类:

1)QMainWindow 2)QSqlTableModel 3)QTableWidget。

但哪一个满足我的要求?我无法实现它,请指导我。提前谢谢。

我已在源文件中实现了这个 -

的main.cpp

#include <QtGui/QApplication>
#include <QtSql>
#include <QTableWidget>
#include <QMessageBox>
#include "mainwindow.h"
#include <QRadioButton>
#include <QVBoxLayout>
#include <QGroupBox>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QTableWidget* table = new QTableWidget();
    table->setWindowTitle("Connect to Mysql Database Example");

        QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
        db.setHostName("localhost");
        db.setDatabaseName("guests");
        db.setUserName("sri");
        db.setPassword("******");
        if (!db.open())
        {
          QMessageBox::critical(0, QObject::tr("Database Error"),
          db.lastError().text());
        }

        QSqlQuery query("SELECT * FROM new_members");

        table->setColumnCount(query.record().count());
        table->setRowCount(query.size());

        int index=0;
        while (query.next())
        {

            table->setItem(index,0,new QTableWidgetItem(query.value(0).toString()));
            table->setItem(index,1,new QTableWidgetItem(query.value(1).toString()));

            index++;

        }

// This is sample radiobutton from QGroupBox class. Like this I need to implement the values from DB in with radio button selections for each value

        QMainWindow *window = new QMainWindow();
        window->setWindowTitle(QString::fromUtf8("QGroupBox"));
        window->resize(400, 400);
        QGroupBox *groupBox = new QGroupBox("Radio Buttons");
        QRadioButton *radio1 = new QRadioButton("Radio button 1");
        radio1->setChecked(true);
        QVBoxLayout *vbox = new QVBoxLayout;
        vbox->addWidget(radio1);
        groupBox->setLayout(vbox);
        window->setCentralWidget(groupBox);
        window->show();

        table->show();
                                         //MainWindow w; w.show();

        return a.exec();
}

1 个答案:

答案 0 :(得分:1)

使用QSqlTableModel来推送QTableView,您需要自定义QStyledItemDelegate 绘制 QRadioButtonyes I said draw, and not create ),并创建一个编辑器小部件(当然,这将是一个QRadioButton)。

这是一项相当大的工作,所以你需要阅读上面的课程'docs来重新实现你需要的东西。从MVC documents开始。