У меня есть несколько групповых блоков в моем приложении, которые размещены в одном родительском виджете, и каждому из них предоставляется дочерний экземпляр QwtPlot. Пользователь может работать с графиками с помощью мыши (масштабирование, панорамирование …).
Я хочу отслеживать, в каком групповом блоке работает пользователь в данный момент (это блок фокус-группы). Однако события обрабатываются стандартным способом, поэтому, если пользователь работает с графиком, события мыши потребляются этим графиком. Я хочу знать, что пользователь работает с определенным групповым ящиком, независимо от того, какие операции он выполняет со своими вложенными виджетами.
Какие-либо предложения?
Хорошо, я нашел решение. QGroupBox должен быть переопределён, например:
class CustomGroupBox : public QGroupBox {
Q_OBJECT
public:
CustomGroupBox(QWidget *parent = 0) : QGroupBox(parent);
CustomGroupBox(const QString &title, QWidget* parent = 0) : QGroupBox(title, parent);
signals:
void customReleased();
protected:
void mouseReleaseEvent(QMouseEvent* event) {
emit customReleased();
QGroupBox::mouseReleaseEvent(event);
}
};
Затем я могу подключить customReleased () всех моих групповых блоков к одному слоту, который будет обрабатывать объект sender () и отслеживать активный групповой блок.
Других решений пока нет …