как заставить QMainWindow не мерцать при изменении размера - PullRequest
0 голосов
/ 03 декабря 2018

Я отображаю информацию о потоке push-уведомлений OBS на объекте QMainWindow.Когда я изменяю размер окна QMainWindow, перетаскивая его мышью, окно мерцает;когда я перетаскиваю мышку (без изменения ее размера), окно не мерцает.Я проверил сообщение через spy ++ и обнаружил, что когда я меняю окно на flash, система генерирует сообщение WM_PAINT.как fllow введите описание изображения здесь Просматривая справочную документацию Qt, я переписал функцию nativeEvent;однако, когда я оцениваю сообщение WM_PAINT, WM_ERASEBKGND, программа попадает в бесконечный цикл

bool MainLayerItemWndView::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
	MSG* msg = (MSG*)message;
	switch (msg->message)
	{
	case WM_PAINT:
		
		std::cout << "nativeEvent paint: " << "message handle1:"  << std::endl;
		*result = 1;
	
		return true;
	break;
	case WM_ERASEBKGND:
		*result = 1;
		std::cout << "WM_ERASEBKGND :---------------" << std::endl;
		return true;
		break;
	default:
		break;
	}
	return QWidget::nativeEvent(eventType, message, result);
}
Когда я переписываю eventFilter для перехвата сообщения перерисовки, окно все еще мигает, и я вижу сообщение WM_PAINT в spy ++.Итак, что я должен делать, когда я изменяю размер окна QMainWindow (и OBS также будет выдвигать), окно не будет мигать?Или есть другой способ избежать этой проблемы?Большое спасибо.
...