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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QLayout  (Прочитано 3200 раз)
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« : Август 27, 2013, 13:44 »

Скажите
Код
C++ (Qt)
void QLayout::removeWidget ( QWidget * widget )
 
удаляет widget из QLayout или нет???
По доке удаляет
Тогда не пойму почему у меня не перерисовывает нормально.
Вот код

Код
C++ (Qt)
 
enum active_table {stantion,device,function};
 
class tableWidget: public QWidget
{
   Q_OBJECT
 
public:
   explicit tableWidget(QWidget*parent = 0);
   virtual ~tableWidget();
 
protected:
   virtual void contextMenuEvent(QContextMenuEvent *);
 
public Q_SLOTS:
   void sl_tablestantion(TableStantion *);
   void sl_tabledevice(TableDevice *);
 
public:
   QTableWidget*table;
   QVBoxLayout *vb;
 
   active_table table_flag;
   TableStantion *tbs;
   TableDevice *tbd;
   TableFunctionDev *tbf;
};
 

Код
C++ (Qt)
void tableWidget::sl_tablestantion(TableStantion *tb)
{
   switch(table_flag)
   {
   case stantion:
       vb->removeWidget(tbs);
       break;
 
   case device:
       vb->removeWidget(tbd);
       break;
 
   case function:
       vb->removeWidget(tbf);
       break;
   }
 
   table_flag = stantion;
   tbs = tb;
   vb->addWidget(tb);
   qDebug()<<"table_flag = "<<table_flag;
}
 
void tableWidget::sl_tabledevice(TableDevice *tb)
{
   switch(table_flag)
   {
   case stantion:
       vb->removeWidget(tbs);
       break;
 
   case device:
       vb->removeWidget(tbd);
       break;
 
   case function:
       vb->removeWidget(tbf);
       break;
   }
 
   table_flag = device;
   tbd = tb;
   vb->addWidget(tb);
   qDebug()<<"table_flag = "<<table_flag;
 
}
 
 
 
« Последнее редактирование: Август 27, 2013, 14:03 от demaker » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Август 27, 2013, 14:38 »

хоть бы картинки показал что не так

addWidget() всегда добавляет в конец (вниз для вертикального) если дело в этом. также удаление виджета из лэйаута не означает удаление самого виджета или его скрытие.
Записан

Изучением 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
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #2 : Август 27, 2013, 14:39 »

Непонятно что у вас там не так перерисовывает, но скорее всего ваш косяк.
Вот что гласит документация:
Цитировать
Removes the widget widget from the layout. After this call, it is the caller's responsibility to give the widget a reasonable geometry or to put the widget back into a layout.
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« Ответ #3 : Август 27, 2013, 15:08 »

хоть бы картинки показал что не так

На первой картинке мы начинаем добавлять станции
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« Ответ #4 : Август 27, 2013, 15:09 »

Вторая картинка
Перешли на станцию
должна отображаться таблица устройств, но их нет т.к мы их не добавляли
« Последнее редактирование: Август 27, 2013, 15:11 от demaker » Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« Ответ #5 : Август 27, 2013, 15:12 »

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


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