В общем есть QTreeWidget, в нем на сигнал clicked открывается новое окно с QTableView.
Задача.
Сделать форму с QGridLayout, где в позиции 0,0 находится QTreeWidget, изначально в 0,1 пусто. На сигнал clicked - в 0,1 появляется QTableView.
Проблема: QTreeWidget и QTableView описаны в разных функциях и их нельзя добавить в один Layout или я просто не понимаю как это сделать.
Делал вот так, но программа падает после сигнала clicked.
void MainWindow::ConnectToDB(){
...
QTreeWidget *tree = new QTreeWidget();
for (int i = 0; i < dblist.count(); ++i) {
QTreeWidgetItem *item = new QTreeWidgetItem(tree);
item->setText(0, dblist[i]);
}
connect(tree,SIGNAL(clicked(QModelIndex)),
this,SLOT(itemclicked(QModelIndex)));
QWidget *wd = new QWidget;
QGridLayout *workwithdb = new QGridLayout;
QTableView *selectdbView = new QTableView();
workwithdb->addWidget(tree,0,0);
workwithdb->addWidget(selectdbView,0,1);
wd->setLayout(workwithdb);
wd->show();
}
void MainWindow::itemclicked(QModelIndex index)
{
QString selectedDB;
selectedDB = index.data().toString();
db.setDatabaseName(selectedDB);
db.open();
QSqlQueryModel *selectdbModel = new QSqlQueryModel();
selectdbModel->setQuery("SHOW TABLES;");
QTableView * selectdbView = new QTableView();
selectdbView->setModel(selectdbModel);
connect(selectdbView,SIGNAL(clicked(QModelIndex)),this,SLOT(selecttable(QModelIndex)));
QGridLayout *workwithdb = new QGridLayout();
workwithdb->addWidget(selectdbView,0,1);
workwithdb->addWidget(tree,0,0);
QWidget *wd = new QWidget();
wd->setLayout(workwithdb);
wd->show();
}