Как обновить / обновить / перекрасить QMainWindow из QDialog? - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть QDialog, у которого есть некоторые настройки, на основе которых QTreeView или весь QMainWindow необходимо обновить, перекрасить или обновить.

QDialog имеет две кнопки:

  • Применить: эта кнопка должна применить настройки к QMainWindow, такие как цвет к столбцам QTreeView.Это один пример, в QMainWindow есть больше элементов, таких как QTableView и т. Д., Которые также необходимо обновить при нажатии этой кнопки.

  • Закрыть: эта кнопка скрывает QDialog.

Я пытался вызвать функцию перекраски / обновления в QMainWindow при нажатии кнопки Apply, но ничего не работает.

void MainWindow::refresh() 
{
setUpdatesEnabled(true);
setWindowModified(true);
repaint();
update();
show();
}

Однако при нажатии кнопки закрытия, которая вызывает функцию Hide на QDialog,весь вид на QMainWindow обновляется / перекрашивается.

Мне нужно сделать то же самое с кнопкой Применить.

Как этого добиться?Что такое слот, который QDialog-> hide вызывает на QMainWindow?

1 Ответ

0 голосов
/ 20 сентября 2018

Если ваши цвета основаны на ролях Qt , вам нужно обновить модель данных (посмотрите на dataChanged signal ), а не в главном окне.Если ваши цвета основаны на qt css, вы можете просто вызвать QMainWindow :: setStyleSheet с новыми значениями

...