繁体   English   中英

如何在Linux中运行FlashWindow?

[英]How to run FlashWindow in Linux?

该过程完成后,我需要在任务栏中突出显示一个窗口。

我叫::FlashWindow((HWND)winId(), false); 在Windows中。
我如何在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);
}

有什么区别?

没有通用的方法可以完成此操作,因为它取决于桌面环境

可能根本没有“任务栏”(或面板)。 过去,尝试支持window.getAttention()方法的浏览器制造商遇到了类似的问题。

即使Qt标题栏闪烁也不是一件容易的事,因为Qt对窗口装饰(边框和标题)没有任何控制,因此您可能需要使用Xlib手动实现。

如果要在所有目标平台上获得相同的效果,则可以考虑实现简单的“闪烁”效果(例如,使用窗口不透明度 )。 请注意,仅当您运行合成器时,X11才支持该窗口不透明度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM