Russian Qt Forum
Ноябрь 26, 2024, 17:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTabWidget+QTableWidget  (Прочитано 4591 раз)
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) обрабатывать разные действия с виджетом.
Спасибо, постарался объяснить как мог
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Октябрь 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();
       ...
   }
}
« Последнее редактирование: Октябрь 12, 2011, 23:16 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
BuRn
Гость
« Ответ #2 : Октябрь 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) значения
вообще хз чо это
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Октябрь 12, 2011, 23:37 »

Q_OBJECT ты забыл
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
BuRn
Гость
« Ответ #4 : Октябрь 12, 2011, 23:44 »

получаем в виджете NULL после
qobject_cast<MyWidget *>(ui->tabWidget_2->currentWidget());
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #5 : Октябрь 12, 2011, 23:49 »

а добавляешь ты табы как? ui->tabWidget_2->addWidget("tab name", wi) ? если второй параметр не wi (это который типа MyWidget), тогда ничего удивительного нету.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
BuRn
Гость
« Ответ #6 : Октябрь 12, 2011, 23:51 »

понял, спасибо, сейчас буду проверять
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.145 секунд. Запросов: 23.