2013-02-12 3 views
0

Я хочу показать некоторые значения строк базы данных с помощью выбора переключателя в Qt GUI. Как это можно сделать? Думаю, это можно сделать с помощью цикла foreach. Я немного изучил следующие классы:Отображение значений базы данных с помощью выбора переключателя в Qt?

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

Используйте QSqlTableModel вбить QTableView, вам потребуется обычай QStyledItemDelegate чтобы рисовать в QRadioButton (yes I said draw, and not create) и создать виджет редактора (конечно, это действительно будет QRadioButton).

Это довольно большая работа, поэтому вам нужно будет прочитать документы этого класса, чтобы повторно реализовать нужные вам биты. Начните с MVC documents.

+0

Большое спасибо за ваш ответ, поскольку я новичок в Qt, пожалуйста, любезно объясните мне пошаговую процедуру (еще упрощенную) для выполнения моей задачи ... :) – highlander141

+1

Если вы новичок в Qt, то вам нужно учиться, и вы не узнаете ничего из пошагового руководства (не говоря уже о том, что вы делаете, это не тривиально). Прочитайте документы MVC, а затем создайте программу, которая может загрузить существующий SQL db в 'QSqlTableModel', к тому времени, как вы это сделали, у вас появятся конкретные проблемы, которые вы можете разместить в качестве новых вопросов на этом сайте. – cmannett85

Смежные вопросы