11

私はwindows7とQt5.3.0を使用しています。以下にMainWindowのコンストラクターに追加しましたが、タスクバーには何も表示されません。私は何か見落としてますか?

QWinTaskbarProgress * pTaskbarProgress = new QWinTaskbarProgress(this);
pTaskbarProgress->setMinimum(0);
pTaskbarProgress->setMaximum(100);
pTaskbarProgress->setValue(50);
pTaskbarProgress->show();
4

3 に答える 3

12

実際、呼び出しているようです

button->setWindow(widget->windowHandle());

setVisible(true)QMainWindow コンストラクターでは機能せず、またはを呼び出した後でも QWinTaskbarProgress はまったく表示されませんshow()

QMainWindow コンストラクターで作成された場合は、ウィンドウが次のように表示されたら呼び出す必要があります。

void MainWindow::showEvent(QShowEvent *e)
{
#ifdef Q_OS_WIN32
    m_button->setWindow(windowHandle());
#endif

    e->accept();
}
于 2014-11-13T14:01:34.233 に答える
3

このクラスの背後にある歴史は、それが の一部であったということQWinTaskbarButtonです。リファクタリングとデカップリングを開始した関連するアップストリーム コミットを確認できます。

QWinTaskbarButton からの QWinTaskbarProgress のリファクタリング

QWinTaskbarProgress のドキュメントではあまり明示的ではないので、これは上流で改善される可能性がありますが、QWinTaskbarButton の例Music Player の例は要点を示しています。つまり、次の行を置き換える必要があります。

QWinTaskbarProgress * pTaskbarProgress = new QWinTaskbarProgress(this);

と:

QWinTaskbarButton * pTaskbarButton = new QWinTaskbarButton(this);
pTaskbarButton->setWindow(windowHandle());
QWinTaskbarProgress * pTaskbarProgress = pTaskbarButton->progress();

カスタム イメージまたは Music Player の例のようなものを使用して、タスクバー ボタンのオーバーレイ アイコンを設定することもできます。

pTaskbarButton->setOverlayIcon(style()->standardIcon(QStyle::SP_MediaPlay));
于 2014-07-19T14:34:39.673 に答える