我有一個包含水平QSplitter的Qt(5.8 C++)窗口。最初我只包含2個小部件(而不是QScrollArea's),我的主窗口將初始化爲每個內部小部件的最小大小(大約500x600),除非我長大窗口,否則分離器不會真正滑動到任何位置,因爲組件已經處於最小尺寸。但它看起來不錯。但是,由於我知道頂部小部件在典型使用中有時會變得非常大,所以我把它放在QScrollArea中,然後將THAT放入QSplitter的上半部分。我期望它像之前一樣初始化爲大約500x600(沒有滾動條),並且滾動條僅在縮小窗口(或之後增加內部小部件)時出現。但似乎發生的事情是,QScrollArea想要在它所包含的組件周圍繪製一個簡潔的邊框。這會將幾個像素添加到顯示我的整個窗口小部件所需的最小大小,從而使其始終開始繪製滾動條。如果我用鼠標將窗口的高度增加幾個像素,滾動條就會消失。所以每次運行我的應用程序時,我的第一步就是將窗口的高度增加幾個像素,以使煩人的滾動條消失。也許QScrollBar不會將邊框的像素添加到最小尺寸的高度? (我嘗試添加幾個像素到最小尺寸,它似乎沒有效果)。在QSplitter中使用QScrollArea時的初始窗口大小略微過小使滾動條出現
有沒有辦法讓我的窗口初始化爲沒有滾動條,如果窗口小部件的大小足夠小,窗口小於全屏?我只想讓滾動條在必要時出現。
希望下面的示例代碼有助於解釋我做了什麼讓這裏:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow) {
auto centralSplitter = new QSplitter(Qt::Vertical);
setCentralWidget(centralSplitter);
auto button1 = new QPushButton("Top\nButton\n(Add more lines of text than this to make button taller)");
//This looks fine, but has no scroll bar
//centralSplitter->addWidget(button1);
// This creates a scroll bar even if it shouldn't be necessary
auto scrollArea1 = new QScrollArea;
scrollArea1->setWidget(button1);
centralSplitter->addWidget(scrollArea1);
auto button2 = new QPushButton("Bottom\nButton\n(I also added more text here too)");
centralSplitter->addWidget(button2);
}
你可以顯示你所得到的,並指出你有錯誤或不便。 – eyllanesc
我添加了更多文字使其更加清晰。我希望有所幫助。 – user545226
圖像會好很多。 – eyllanesc