Como atualizar / update / repintar QMainWindow de QDialog?

votos
-1

Eu tenho um QDialog que tem algumas configurações, com base na qual, QTreeView ou toda a QMainWindow precisa ser atualizado ou redesenhado ou atualizada.

QDialog tem dois botões:

  • Aplicar: Este botão tem de aplicar as configurações a QMainWindow, tais como a cor para colunas QTreeView. Este é um exemplo, há mais itens como QTableView etc. no QMainWindow que também precisa ser atualizado em clicar neste botão.

  • Fechar: Este botão esconde a QDialog.

Eu tentei invocando função / atualização repaint em QMainWindow em clicar no botão Aplicar, mas nada funciona.

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

No entanto, clicando no botão Fechar, que chama esconder em QDialog, toda a visão em QMainWindow é atualizado / repintado.

Eu preciso fazer o exatamente mesma coisa em botão Aplicar.

Como conseguir isso? Qual é o slot que QDialog-> hide está convidando QMainWindow?

Publicado 20/09/2018 em 04:35
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Se suas cores com base em papéis Qt você tem que atualizar modelo de dados (ver sinal DataChanged ) não janela principal. Se suas cores com base em css qt você pode apenas chamar QMainWindow :: setStyleSheet com novos valores

Respondeu 20/09/2018 em 05:14
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more