crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> очистить контекстное меню QTableWidget
maint
  опции профиля:
сообщение 16.2.2015, 9:42
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 233
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


имею QTableWidget, запроняю контекстное меню
        while (q.next()) {
            QAction *aRules;
            aRules = new QAction(this);
            aRules->setText(q.value(0).toString());
            connect(aRules, SIGNAL(triggered()), this, SLOT(slotRules()));
            ui->rules->addAction(aRules);
        }

возник вопрос, как этот список actions очистить? Чего то не могу сообразить
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 16.2.2015, 10:57
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


либо куда то сохранить во временном контейнере, либо получать список действий из виджета QList<QAction *> QWidget::actions () const.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 16.2.2015, 11:36
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 233
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(wiz29 @ 16.2.2015, 15:57) *
либо куда то сохранить во временном контейнере, либо получать список действий из виджета QList<QAction *> QWidget::actions () const.

не очень как то красивое решение. Что то мне не нравится в delete каждого действия
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 16.2.2015, 12:21
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Цитата(maint @ 16.2.2015, 11:36) *
Цитата(wiz29 @ 16.2.2015, 15:57) *
либо куда то сохранить во временном контейнере, либо получать список действий из виджета QList<QAction *> QWidget::actions () const.

не очень как то красивое решение. Что то мне не нравится в delete каждого действия


qDeleteAll в помощь. Красивое решения для "запихнутых" в виджет экшенов искать - сложная задача.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 17.2.2015, 17:46
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Наследников QObject лучше удалять через deleteLater()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 17.2.2015, 18:02
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 233
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(Litkevich Yuriy @ 17.2.2015, 22:46) *
Наследников QObject лучше удалять через deleteLater()

не дошло как это?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 17.2.2015, 18:21
Сообщение #7


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


вместо

delete pSomeObject;

вызывать
pSomeObject->deleteLater();

Такой подход позволяет избежать некорректного удаления объекта в цепочке обработки сообщений и их доставки.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.10.2020, 8:24