如何在Qt中保存setMovable(工具栏)

How to save setMovable (of Toolbars) in Qt?

本文关键字:setMovable 工具栏 保存 Qt      更新时间:2023-10-16

如何在Qt中存储工具栏的setMoveable属性?

我正在使用QSettingssaveState()来保存工具栏的状态(例如位置)。但显然这并不能保存setMoveable属性。

这是到目前为止加载和保存的代码:

void MainWindow::readSettings()
{
    QSettings settings(QCoreApplication::organizationName(), QCoreApplication::applicationName());
    const QByteArray geometry = settings.value("geometry", QByteArray()).toByteArray();
    const QByteArray windowState = settings.value("windowstate", QByteArray()).toByteArray();
    if (geometry.isEmpty()) {
        const QRect availableGeometry = QApplication::desktop()->availableGeometry(this);
        resize(availableGeometry.width() / 3, availableGeometry.height() / 2);
        move((availableGeometry.width() - width()) / 2,
             (availableGeometry.height() - height()) / 2);
    } else {
        restoreGeometry(geometry);
    }
    if (!windowState.isEmpty()) {
        restoreState(windowState);
    }
}
void MainWindow::writeSettings()
{
    QSettings settings(QCoreApplication::organizationName(), QCoreApplication::applicationName());
    settings.setValue("geometry", saveGeometry());
    settings.setValue("windowState", saveState());
}

我认为您必须自己存储它们,使用类似的东西

QSettings settings(...);
settings.setValue("movable", toolbar->isMovable());

toolbar->setMovable(settings.value("movable", false).toBool());

分别,假设有一个像这样的QToolbar

QToolbar *toolbar;

请注意,您也可以在此处使用类似组的内容

settings.beginGroup("QToolbar");
// access settings here (store/load)
settings.endGroup();

这有助于对设置进行分组。