gpt4 book ai didi

c++ - 如何通过Qt中的菜单锁定所有工具栏?

转载 作者:行者123 更新时间:2023-11-30 03:40:29 28 4
gpt4 key购买 nike

我正在试验 Qt Creator 和 Application Example .

我想在工具栏菜单中添加一个可检查的菜单条目,该菜单显示为“锁定工具栏”,并且在选中时锁定所有工具栏的位置。我想这是一个很常见的功能。

我设法通过以下方式找到了一个锁定单条柱的命令:

toolBar->setMovable(false);

但我不知道如何锁定所有工具栏。

编辑

这个问题曾经包含有关工具栏上下文菜单而不是标准菜单的查询。由于我在其他地方得到了有关上下文菜单的答案,因此我将其从这个问题中删除。

How to add an entry to toolbar context menu in qt?

最佳答案

这是一个如何实现它的例子。首先,添加一个 QAction和一个 QMenu ;另外,将所有工具栏声明为私有(private):

private:
QMenu* m_pLockMenu;

QToolBar* m_pFileToolBar;
QToolBar* m_pEditToolBar;
QToolBar* m_pHelpToolBar;

QAction* m_pLockAction;

此外,声明一个插槽,您将在触发操作时管理工具栏的锁定:

public slots :
void lockActionTriggered();

实现您的广告位。你只需要锁定所有的工具栏:

void lockActionTriggered()
{
m_pFileToolBar->setMovable(false);
m_pEditToolbar->setMovable(false);
m_pHelpToolBar->setMovable(false);
}

现在,您只需在 .cpp 中声明您的主窗口,并在其中添加菜单、工具栏和操作:

QMainWindow* mainWindow = new QMainWindow();

m_pLockMenu = mainWindow->menuBar()->addMenu("Lock Toolbars");

m_pFileToolBar = mainWindow->addToolBar("File");
m_pEditToolBar = mainWindow->addToolBar("Edit");
m_pHelpToolBar = mainWindow->addToolBar("Help");

m_pLockAction = new QAction("Lock", this);

现在,将操作添加到菜单:

m_pLockMenu->addAction(m_pLockAction);

并连接 QAction 的信号 triggered()到你的插槽:

connect(m_pLockAction, SIGNAL(triggered()), this, SLOT(lockActionTriggered()));

不要忘记show()你的主窗口:

mainWindow->show();

它现在应该可以正常工作了!


编辑

您的代码必须如下所示:

mainwindow.h 中:

class MainWindow : public QMainWindow
{

...

private:
QMenu* m_pLockMenu;

QToolBar* m_pFileToolBar;
QToolBar* m_pEditToolBar;
QToolBar* m_pHelpToolBar;

QAction* m_pLockAction;

public slots :
void lockActionTriggered();
};

main.cpp中:

int main(int argc, char *argv[])
{

...
QApplication app(argc, argv);
MainWindow window;
window.show();

app.exec();

}

mainwindow.cpp中:

void MainWindow::createActions()
{
m_pLockMenu = menuBar()->addMenu("Lock Toolbars");

m_pFileToolBar = addToolBar("File");
m_pEditToolBar = addToolBar("Edit");
m_pHelpToolBar = addToolBar("Help");

m_pLockAction = new QAction("Lock", this);

m_pLockMenu->addAction(m_pLockAction);

connect(m_pLockAction, SIGNAL(triggered()), this, SLOT(lockActionTriggered()));

...
}

void MainWindow::lockActionTriggered()
{
m_pFileToolBar->setMovable(false);
m_pEditToolbar->setMovable(false);
m_pHelpToolBar->setMovable(false);
}

关于c++ - 如何通过Qt中的菜单锁定所有工具栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37987116/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com