QCheckBox不会更新,除非再次将鼠标悬停在

时间:2018-02-11 17:15:13

标签: qt qcheckbox

我有一个用Qt Creator构建的Qt应用程序。 我在QTabWidget的不同选项卡上有复选框,它有一个视频显示窗口。这让我的电脑很忙。

当我点击复选框时,复选框上的复选会显示一段时间。 如果我快速选中该框并将鼠标移开,则框中的“检查”不会显示。我需要再次将鼠标悬停在复选框上以显示支票。

我为“Display_box_fit”复选框添加了一个stateChanged()函数。当我更新与复选框关联的文本时,会立即发生这种情况。我可以设置另一个复选框的状态,并立即在此框中进行检查。但是,对“Display_box_fit”的检查很慢,如果我将鼠标移开(即对于复选框没有焦点),则复选框上永远不会显示检查。 在“Display_box_fit_stateChanged()”函数中调用任何数量的repaint()似乎都无法解决问题。

我已经搜索了这个问题太久了,并没有找到好的解决方案。 这似乎是一个非常基本的问题。

有没有办法让这个工作无需用户重新鼠标复选框以查看其状态?

我在Windows下使用Visual Studio在Q ++下使用c ++

代码:

void on_Display_box_fit_stateChanged(){
  if (ui.Display_box_fit->isChecked()){
    ui.Display_box_fit->setText("pushed");
    ui.Display_box_fit->setChecked(true);   // tried this .. no affect
  }else{
    ui.Display_box_fit->setText("no pushed");   // text updated "immediately"
  }
  ui.Display_box_fit_2->toggle();   // this check appears "immediately"

  // tried all kinds or repaint() ... does not seem to help
  ui.tabWidget->currentWidget()->repaint();
  //ui.Display_box_fit->repaint();
  //ui.Display_box_fit->parentWidget()->repaint();
  //ui.Display_box_fit->parentWidget()->parentWidget()->repaint();
  //ui.tabWidget->setCurrentWidget(ui.tab_debug);
  //ui.tabWidget->setCurrentWidget(ui.tab_Display);
};

注1:setChecked(true)试图让Qt在框中呈现复选标记。不幸的是,它对渲染没有影响,可以删除。

注2:构建示例非常困难。我相信这是计算机加载方式的一个功能。如果我在调试器中单步执行上面的代码,我会看到repaint()更新小部件上的文本,但不会更新小部件上的复选标记。

我可以调用哪些功能来更新复选标记?

0 个答案:

没有答案
相关问题