Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: BuRn от Октябрь 12, 2011, 22:53



Название: QTabWidget+QTableWidget
Отправлено: BuRn от Октябрь 12, 2011, 22:53
Суть такая что при определенных стечениях обстоятельств добавляется новый таб в tabWidget , на него я кидаю лайот с
Цитировать
QTableWidget *table=new QTableWidget;
        table->setColumnCount(3);
QGridLayout *la=new QGridLayout;
        table->setDisabled(1);
        la->addWidget(table,0,0);
        la->addWidget(ac,1,0);
        la->addWidget(pr,1,1);
        la->addWidget(cl,1,2);
        wi->setLayout(la);
и вот с таким содержимым постоянно как только в базу попадает определенная запись создается новый таб, так вот как подобраться к виджету таблицы, я изначально не знаю сколько их будет, но нужно как раз на моих кнопках(ac,pr,cl) обрабатывать разные действия с виджетом.
Спасибо, постарался объяснить как мог


Название: Re: QTabWidget+QTableWidget
Отправлено: kambala от Октябрь 12, 2011, 23:14
Код
C++ (Qt)
class MyWidget : public QWidget // в этот класс и поместить все твои элементы интерфейса
{
...
public:
   QTableWidget *tableWidget() { return _tableWidget; }
...
private:
   QTableWidget *_tableWidget;
...
}
...
// твой показанный код
MyWidget *wi = new MyWidget;
...
void someButtonClick()
{
   MyWidget *wi = qobject_cast<MyWidget *>(tabWidget->currentWidget());
   if (wi)
   {
       QTableWidget *table = wi->tableWidget();
       ...
   }
}


Название: Re: QTabWidget+QTableWidget
Отправлено: BuRn от Октябрь 12, 2011, 23:32
Цитировать
/usr/include/qt4/QtGui/qwidget.h: In member function ‘void QWidget::qt_check_for_QOBJECT_macro(const T&) const [with T = MyWidget]’:
/usr/include/qt4/QtCore/qobject.h:364:   instantiated from ‘T qobject_cast(QObject*) [with T = MyWidget*]’
../untitled2/mainwindow.cpp:127:   instantiated from here
/usr/include/qt4/QtGui/qwidget.h:142: ошибка: использование пустого (void) значения
вообще хз чо это


Название: Re: QTabWidget+QTableWidget
Отправлено: kambala от Октябрь 12, 2011, 23:37
Q_OBJECT ты забыл


Название: Re: QTabWidget+QTableWidget
Отправлено: BuRn от Октябрь 12, 2011, 23:44
получаем в виджете NULL после
qobject_cast<MyWidget *>(ui->tabWidget_2->currentWidget());


Название: Re: QTabWidget+QTableWidget
Отправлено: kambala от Октябрь 12, 2011, 23:49
а добавляешь ты табы как? ui->tabWidget_2->addWidget("tab name", wi) ? если второй параметр не wi (это который типа MyWidget), тогда ничего удивительного нету.


Название: Re: QTabWidget+QTableWidget
Отправлено: BuRn от Октябрь 12, 2011, 23:51
понял, спасибо, сейчас буду проверять