Qt делает QSplitter неподвижным пользователем

Как сделать так, чтобы qsplitter был недоступен для пользователя и добавить возможность включить / отключить эту функцию? Спасибо.

1 ответ

Решение

Блокировка QSplitter Обработчик может быть сделан с использованием QSplitterHandler, как @GM предложено в комментарии.

Вот пример кода (при условии, что вы используете QMainWindow)

#include <QCheckBox>
#include <QSplitter>
#include <QLabel>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QSplitter * poSplitter = new QSplitter(this);
    QLabel * poLbl = new QLabel("Some place holer",this);
    QCheckBox * poToggleSplitter = new QCheckBox("Block splitter", this);

    poSplitter->addWidget(poLbl);
    poSplitter->addWidget(poToggleSplitter);

    connect(poToggleSplitter, &QCheckBox::clicked,
            [poSplitter](bool bChecked)
    {
        // Block splitter movement
        poSplitter->handle(1)->setEnabled(!bChecked);
    });

    this->setCentralWidget(poSplitter);
}
Другие вопросы по тегам