2015-05-06 4 views
3

В моих C++ графического интерфейса приложения с Qt,Приобретать строки данных из QTableView

У меня есть кнопка на моем главном окне, нажатие которой открывает диалоговое окно, в этом окне у меня настроить QTableView, который получает заполняется данными, полученным от База данных Oracle.

QSqlDatabase db = QSqlDatabase::addDatabase("QOCI"); 
db.setHostName("...."); 
db.setDatabaseName("..."); 
db.setUserName("..."); 
db.setPassword("..."); 
db.setPort(1521); 

if(db.open()) 
{ 
    qDebug()<<"OPEN SUCCESS"; 
} 
else 
{ 
    qDebug()<<"ERROR "<<db.lastError().text(); 
} 

this->model_oracle=new QSqlQueryModel(); 
model_oracle->setQuery("select * from TEST_1"); 
ui->tableView->setModel(model_oracle); 

пример выходных данных в Tableview показан below--

Name Address Age 
Mike NYC  25 
Jim  FLA  39 
Kate SF   21 

Теперь, когда пользователь, нажимает на любую ячейку, я хочу, 3 поля строки, сохраненной в 3 Струнные переменных. Эти 3 значения строковой переменной I будут использоваться для заполнения данных в моей форме mainwindow.

Любая идея, как достичь этого ??? используя структуру QTableWidget, я могу сделать это с помощью сигнала cellClicked(int,int). Но я не могу найти что-то подобное в QTableView.

Я видел question в SO, который обратился к чему-то подобному, но когда я попытался использовать тот же (т. Е. Сотовый), он все равно не работал.

ответ

2

Попробуйте подключить QAbstractItemView::clicked(QModelIndex) сигнал,

connect(ui->tableView, SIGNAL(clicked(QModelIndex)),this, SLOT(GetField())); 

, который должен вернуть текущий элемент щелкнул.

После того, как у вас есть пункт, в слоте GetField(QModeilIndex index) вы можете получить доступ к выбранной строке что-то вроде:

row = index.row() 

, а затем вы должны быть в состоянии получить доступ к вашему полю с

field = model_oracle->record(row)->field(..) 

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

  • Нет связанных вопросов^_^