Pull to refresh

Comments 6

// отсоединяемся от сигнала, на время установки элементам флажков
disconnect(standartModel, SIGNAL(itemChanged(QStandardItem*)), this, SLOT(slotModelItemChanged(QStandardItem*)));

У QObject есть метод blockSignals, придуманный как раз для этого. Удобного создать «умную структуру-глушилку» — в конструкторе блокируем сигналы, в деструкторе разблокируем.

// присоединяемся к сигналу
disconnect(standartModel, SIGNAL(itemChanged(QStandardItem*)), this, SLOT(slotModelItemChanged(QStandardItem*)));

Тут, наверное, имелось ввиду — connect. Знаю опечатка, но в данном контексте думаю уместно указать.

(void)parent;
(void)start;
(void)end;

Возможно, вопрос стиля, но в Qt для этого есть макрос Q_UNUSED.

У QComboBox есть метод setModel(), думаю стоило написать свою модель и не подписываться на событие rowsInserted, так как в этом случае список выбранных элементов хранился бы на уровне модели, где ему и место.

У QObject есть метод blockSignals, придуманный как раз для этого

Привык отсоединяться только от нужных сигналов, так как иногда бывает нужным ожидать какой-то другой сигнал. Но в данном случае Вы правы, можно глушить всё.

«умную структуру-глушилку» — в конструкторе блокируем сигналы, в деструкторе разблокируем

В лучших традициях RAII…

Тут, наверное, имелось ввиду — connect

Да, спасибо, поправил.

Возможно, вопрос стиля, но в Qt для этого есть макрос Q_UNUSED

Приходится иногда обходится без Qt, чтобы не путатся, стараюсь не использовать Q_*, где это возможно.

думаю стоило написать свою модель и не подписываться на событие rowsInserted

Согласен, своя модель более ближе к архитектуре MVC в Qt.
Не сталкивался с этой библиотекой. Некоторые виджеты (по типу этого) интересные.
Спасибо за статью.
Для «обрезки» текста вроде есть такой метод QFontMetrics::elidedText, если я не ошибаюсь.
Спасибо, вышло одной строкой:

mDisplayText = fontMetrics.elidedText(mDisplayText, Qt::TextElideMode::ElideRight, textRect.width());
Sign up to leave a comment.

Articles