在我們開始之前,這可能是Qt Scroll Area does not add in scroll bars的一個可能的重複,但是用戶提供的答案似乎適用於OP,對我來說不起作用。我擔心它可能與版本有關,也許呢?或者我錯過了什麼? (這是可能的!)如何在滾動區域動態插入項目並在Qt中加載滾動條?
好吧,對於那些誰知道Qt的,我是一個初學者,我似乎什麼是一個非常愚蠢的問題,而是給了我許多煩惱:
我想按下按鈕並將項目添加到容器,然後應該可以將其向下滾動。就如此容易。
所以我認爲,也許設置scrollArea佈局將完成這項工作。它確實添加我的項目,但它不會加載scrollBar。我已經檢查了ScrollPolicy,但沒有任何滿足我的問題。它就像GVBoxLayout不會增加大小,也不會讓滾動區域滾動。
有沒有人有如何解決它的線索?下面
代碼:
saleWindow.h
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QListWidget>
#include<QString>
namespace Ui {
class SaleWindow;
}
class SaleWindow : public QMainWindow
{
Q_OBJECT
public:
explicit SaleWindow(QWidget *parent = 0);
~SaleWindow();
private slots:
void on_pushButton_clicked();
private:
Ui::SaleWindow *ui;
QVBoxLayout *gBoxLayout;
QMap<QString, QListWidget *> m_mappings;
};
#endif // SALEWINDOW_H
saleWindow.cpp
#include "salewindow.h"
#include "ui_salewindow.h"
#include <iostream>
#include <QGroupBox>
#include <QLabel>
//#include <QtSql/QSqlDatabase>
//#include <QtSql>
#include <QtWidgets/QPushButton>
SaleWindow::SaleWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::SaleWindow),
gBoxLayout(new QVBoxLayout())
{
ui->setupUi(this);
// Adding layout to scrollbar
{
ui->scrollArea_sales->setWidgetResizable(true);
ui->scrollArea_sales->setLayout(gBoxLayout);
QWidget *central = new QWidget;
ui->scrollArea_sales->setWidget(central);
}
}
SaleWindow::~SaleWindow()
{
delete ui;
delete gBoxLayout;
}
void SaleWindow::on_pushButton_clicked()
{
QGroupBox *sale = new QGroupBox();
sale->setTitle("minha venda");
gBoxLayout->addWidget(sale);
ui->scrollArea_sales->setLayout(gBoxLayout);
}
你不應該把佈局設置到滾動區域,而是設置到它的部件。 – thuga
所以你的意思是我應該做'central-> setLayout(gBoxLayout);'而不是?如果是這樣,它也不能按預期那樣工作。 –