Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Модель/Представление _ очистить контекстное меню QTableWidget

Автор: maint 16.2.2015, 9:42

имею 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

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

Автор: maint 16.2.2015, 11:36

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

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

Автор: wiz29 16.2.2015, 12:21

Цитата(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

Наследников QObject лучше удалять через deleteLater()

Автор: maint 17.2.2015, 18:02

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

не дошло как это?

Автор: wiz29 17.2.2015, 18:21

вместо

delete pSomeObject;

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

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

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)