想實時獲取到 QT ToolBar 工具欄浮動的狀態,以實時調整窗體的布局。 先使用查找引擎,發現找不到什么有用的文章。 只能查 QT Help,最后獲取到使用 SIGNAL topLevelChanged 可以達到目的。
於是寫了如下的代碼,沒有使用 QT IDE 集成環境的提示(失敗在這里,在自己還不熟悉 QT SIGNAL 的情況下):
connect(toolBar,SIGNAL(topLevelChanged()),this,SLOT(toolBarFloat()));
定義 SLOT toolBarFloat:
void MainWindow::toolBarFloat(bool topLevel) { qDebug() << "toolBar floating: " << topLevel; }
聲明 SLOT:
public slots: void toolBarFloat(bool topLevel);
都是按 SIGNAL 的原型:
void QToolBar::topLevelChanged(bool topLevel) [signal]
運行后發現沒有實現想要的目的,即沒有執行 MainWindow::toolBarFloat 函數。
查來查去也沒有發現什么問題,最后重寫了 connect 語句,使用了 QT IDE 的提示。完成的語句如下:
connect(toolBar,SIGNAL(topLevelChanged(bool)),this,SLOT(toolBarFloat(bool)));
拖動工具欄浮動/停靠窗體時,在“應用程序輸出”窗體中終於看到如下的內容:
toolBar floating: true toolBar floating: false