Qt 使QSlider在QSystemTrayIcon中工作

Qt 使QSlider在QSystemTrayIcon中工作,qt,tray,qslider,Qt,Tray,Qslider,我正试图在Ubuntu 13.04中创建一个亮度控制应用程序。其想法是制作一个托盘图标和滑块,当按下图标时会出现。问题是托盘菜单只包含一个空项。这是一段代码,可以正常工作,但不能正常工作(只有在按下空菜单项时才会显示滑块): 怎么了?你的问题很容易解决。首先,您不需要为菜单项添加操作来触发QSlider的显示/隐藏。您只需为整个托盘图标添加触发器和插槽 connect(tray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), th

我正试图在Ubuntu 13.04中创建一个亮度控制应用程序。其想法是制作一个托盘图标和滑块,当按下图标时会出现。问题是托盘菜单只包含一个空项。这是一段代码,可以正常工作,但不能正常工作(只有在按下空菜单项时才会显示滑块):


怎么了?

你的问题很容易解决。首先,您不需要为菜单项添加操作来触发QSlider的显示/隐藏。您只需为整个托盘图标添加触发器和插槽

connect(tray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
  this, SLOT(trayIconClicked(QSystemTrayIcon::ActivationReason)));
而不仅仅是添加插槽:

void VolumeQWindow::trayIconClicked(QSystemTrayIcon::ActivationReason reason)
{
  if (reason == QSystemTrayIcon::Trigger)
  {
    show();
  }
}
就这样

void VolumeQWindow::trayIconClicked(QSystemTrayIcon::ActivationReason reason)
{
  if (reason == QSystemTrayIcon::Trigger)
  {
    show();
  }
}