2016-01-05 3 views
1

Я пишу «SQLite» базу данных и создать таблицу базы данных, как это:Как заполнить SQLite базы данных tablewidget

void MainWindow::createdata() 
{ 
    QSqlQuery query; 
    query.exec("DROP TABLE messages"); 
    query.exec("CREATE TABLE messages(" 
       "id INTEGER PRIMARY KEY AUTOINCREMENT," 
       "IPAddress VARCHAR(20)," 
       "date VARCHAR(10)," 
       "message VARCHAR(30))"); 

    query.prepare("INSERT INTO messages(IPAddress, date, message) values(?,?,?)"); 
    query.addBindValue("192.168.1.1"); 
    query.addBindValue("jun 3 2016"); 
    query.addBindValue("hello"); 

    if (query.exec()) { 
     qDebug() << "ok!"; 
    } 
    else 
    { 
     qDebug() << query.executedQuery(); 
     qDebug() << query.lastError(); 
    } 
} 

И я создать «QTableWidget», как это:

QTableWidget* table = new QTableWidget(); 

table->setRowCount(10); 
table->setColumnCount(4); 
table->setWindowTitle("Received Message"); 
table->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); 
    table->setHorizontalHeaderLabels(QString("ID;HostAddress;Date;Message").split(";")); 
table->setStyleSheet("QTableView {selection-background-color: blue;}"); 
table->setEditTriggers(QAbstractItemView::NoEditTriggers); 
table->setSelectionBehavior(QAbstractItemView::SelectRows); 
table->setSelectionMode(QAbstractItemView::SingleSelection); 


QSqlQuery query("SELECT * FROM messages"); 

, но я не знаю, как я должен заполнить «tablewidget» для показа с помощью запроса. Может ли кто-нибудь мне помочь? Спасибо

+0

Вообще самый простой способ для отображения данных базы данных в Qt является корыта модель в этом случае QSqlQueryModel, вот пример: HTTP://www.qtforum.org/article/29669/how-display-sqlite-database-table-in-qtableview.html – Marco

+0

@ Марко: я должен использовать tablewidget :( – Hanita

+0

Изменить босс ;-) – Marco

ответ

1

Вы должны использовать QTableView (модельный вариант представления таблицы), а затем используя QSqlQueryModel, вы можете заполнить таблицу.

QSqlQueryModel *model = new QSqlQueryModel(); 
model->setQuery(query); 
tableView->setModel(model); 

Чтобы использовать QSqlQueryModel с QTableWidget, вы должны перебирать QSqlQueryModel построчно и добавить их в свой QTableWidget.

QSqlQueryModel *model = new QSqlQueryModel(); 
model->setQuery(query); 

int i; 
QSqlRecord row 
for(i = 0, row = model->record(i); !row.isEmpty(); i++, row = model->record(i)){ 
    // Get each field using `value` method of variabale 'row' 
    // and insert this fields to its corresponding cell in QTableWidget 
} 

Соответствующий вопрос:

Setting the model to a QTableWidget

+0

@Frogatto: но я должен использовать QTableWidget – Hanita

+0

@Hanita Wh y вы должны использовать 'QTableWidget'? –

+0

, потому что мой босс говорит это: D :( – Hanita

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