Qtが新しく、メインウィンドウ、QDockWidget、ボタンを含むアプリケーションの作成を試みています。Qt C++ウィンドウのタイトルバーがブロックされています
メインウィンドウに1280 x 720の解像度があるとします。次に、windowTitleBarを使わずに左からdockWidthとheightの幅720をポップアップするQDockWidgetを実装します。ボタンのサイズは(buttonWidth、720)です。最初は隠れていて、ボタンだけがあります。ボタンドックをクリックすると、ボタンがドックの右端に移動します。ここ は私のコードです:
window::window(unsigned int h, unsigned int v, QWidget *parent) {
this->setFixedSize(h, v);
ui.setupUi(this);
createDockWindow();
}
void window::createDockWindow() {
dock = new QDockWidget(this);
dock->setTitleBarWidget(new QMainWindow());
dock->setGeometry(QRect(this->rect().topLeft(),
QSize(dockWidth, this->height())));
dock->setFloating(true);
dock->hide();
path_button = new QPushButton(">", this);
path_button->setGeometry(QRect(this->rect().topLeft(),
QSize(buttonWidth, this->height())));
connect(path_button, SIGNAL (released()), this, SLOT (showDock()));
}
void rubrick::showDock() {
if(dock->isHidden()){
dock->show();
path_button->setGeometry(QRect(dock->rect().topRight(),
QSize(buttonWidth, this->height())));
} else {
dock->hide();
path_button->setGeometry(QRect(dock->rect().topLeft(),
QSize(buttonWidth, this->height())));
}
}
ので、ボタンが最初に私のアプリは、そのスクリーンショットのように見えますが、完璧に動作します:
しかし、ドックショー、そのブロックアプリウィンドウのタイトルバーなどその:スクリーンショット
私は)(this-> RECT、考え出しはTOPLEFT()トップLEFを返します。画面のtを考慮していませんが、ウィンドウのタイトルバーを取りません、私はmenuBarの高さを取得しようとしましたが、30を返し、私は0の幅と45で(0、45)ドックは完全に正しい位置にあります。 私は間違って何をしており、その問題を解決するには?
でも、それは742を返すのでdiffは22ですが、ドックを22ピクセル下に動かすと、タイトルバーの下に移動しません:( – fminkin
よろしくお願いします。差を追加する必要がありました* 2 + 1 QDockWidgetとメインウィンドウの両方に22ピクセルの差があるので、次のピクセルに到達するため、45が良いショットでしたが、これはどの解像度でも計算可能です。 – fminkin