簡體   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