当进程完成时,我需要高亮显示任务栏中的一个窗口。
我在Windows中调用::FlashWindow((HWND)winId(), false);。
我如何在Linux中做同样的事情呢?
QApplication::alert(this);不适合我。
KDE桌面5
这个代码对我不起作用。
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->pushButton, SIGNAL(released()), this, SLOT(test()));
}
void MainWindow::test()
{
QThread::msleep(5000);
QApplication::alert(this);
}但这个很管用。
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QTimer *timer = new QTimer();
QObject::connect(timer, SIGNAL(timeout()), this, SLOT(timer_alert()));
timer->start(5000);
}
void MainWindow::timer_alert() {
QApplication::alert(this);
}有什么关系?
发布于 2018-04-23 09:56:16
由于它依赖于桌面环境,因此没有通用的方法来完成这一任务。
可能根本没有“任务栏”(或面板)。过去,浏览器制造商也有类似的问题,试图支持window.getAttention()方法。
即使是闪烁标题栏也不是那么容易,因为Qt对窗口装饰(边框和标题)没有任何控制,因此您可能需要使用Xlib手动实现这一点。
如果您想在所有目标平台上获得相同的效果,您可以考虑实现一个简单的“闪烁”效果(例如,使用窗口不透明)。不过,请注意,只有在运行排序程序时,X11才支持该窗口不透明度。
https://stackoverflow.com/questions/49974326
复制相似问题