Qt中QListWidget取消選擇事件


1.出現的問題

在使用QListWidget的時候,有這樣的業務邏輯。用戶切換節點后,需要判斷一些條件決定是否真正跳轉至下個節點,那么怎么攔截這個事件就是本次文檔的主要內容。

2.解決辦法

使用eventfilter,在QListWidget的上級控件中,安裝事件監聽器。

ui->listWidget->viewport()->installEventFilter(this); 注意是listWidget->viewport(),而不是listWidget

在上級控件中繼承eventfiler方法攔截事件信息,如下代碼


bool XXXXX::eventFilter(QObject* watched, QEvent* event)
{
	if (watched == ui->listWidget->viewport())
	{
		qDebug() << event->type();
		if (event->type() == QEvent::MouseButtonPress
			&& m_bIsChanged)
		{
			MessageDialog::dialogShow(MessageDialog::Check, tr("Warning"), tr("Please save the current group first"));
			event->ignore();
			return true;
		}
	}
	return QWidget::eventFilter(watched, event);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM