2016-06-06 2 views
0

Я пытаюсь создать простой коммуникатор с пользовательским интерфейсом на основе вкладок (QTabWidget). Я хочу, чтобы вкладки были закрываемыми и подвижными. Тем не менее, для каждой вкладки я хотел бы запомнить указатель на мой класс (где я храню сокет и т. Д.), Поэтому я мог бы управлять закрытием вкладок и отключением сокетов.QTabWidget - как «включить» указатель на каждую вкладку?

Один из способов - сохранить их (указатели) в массиве/любом контейнере, проанализировать любой шаг, который был сделан пользователем, и изменить индексы или указатели подкачки в зависимости от индекса вкладок, которые были перемещены, но это связано с большим количеством работы и еще больше ошибок. Есть ли другой и более простой способ получить его?

ответ

1

Использование myTabWidget->widget(index).

Существует по одному для каждой вкладки.

Doc

Вы можете установить виджет в качестве родителя вашего класса, если ваш класс наследует от QObject, или соединить его сигналы (как destroyed()) с тем из вашего класса.

Или вы даже можете сделать

QVariant prop = QVariant::fromValue<intptr_t>((intptr_t)workerObject); 
myTabWidget->widget(index)->setProperty("workerObject", prop); 

действительно хранить указатель и

QVariant prop = myTabWidget->widget(index)->getProperty("workerObject"); 
WorkerClass *ptr = (WorkerClass*) prop.value<intptr_t>(); 

, чтобы получить его обратно.

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