установите EventFilter на QWidget (qt4.4.3/kde4)

Вам нужно использовать метод фильтра в вашем массиве, если вы хотите сделать это после того, как у вас есть данные:

this.abcArray.filter(item => ...your predicate to say an item is non-empty...)

Если вы можете контролировать, когда элементы толкнул или нет, почему бы тебе просто не толкнуть их только тогда, когда ты знаешь, что они не пустые?

if (... your predicate non empty ...)
  this.abcArray.push(res)

5
задан Bill the Lizard 28 August 2011 в 03:19
поделиться

3 ответа

Помимо молотового подхода setEnabled в первом ответе, существует два других подхода, один из которых должен использовать eventfilters.

Другой должен разделить виджет на подклассы и затем повторно реализовать, скажем, мышь* события. Просто отъезд их пустой предотвратит любое взаимодействие мыши. Так:

MyWidget: общедоступный QSomeWidget {общественность Q_OBJECT: MyWidget (QWidget *родитель);

защищенный: освободите mousePressEvent (QMouseEvent *) {}.. и т.д.};

2
ответ дан 15 December 2019 в 01:13
поделиться

QWidget имеет enabled свойство. Просто звоните widget->setEnabled(false) и это будет препятствовать тому, чтобы он принял щелчки мышью. Это может также изменить свое появление: например, a QPushButton отобразится серым.

Фильтры события походят на излишество для того, что Вы хотите.

1
ответ дан 15 December 2019 в 01:13
поделиться

Это похоже eventFilter() то, что Вы хотите.

Вот раздел спокойных документов, которые говорят об этом: Фильтры События

В основном необходимо создать класс, который наследовался QObject и затем реализуйте виртуальную функцию eventFilter(). Затем назовите installEventFilter () методом на объекте, который Вы хотите отфильтровать с фильтром в качестве параметра.

1
ответ дан 15 December 2019 в 01:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: