我正在试验 Qt Creator 和 Application Example .
我想在工具栏菜单中添加一个可检查的菜单条目,该菜单显示为“锁定工具栏”,并且在选中时锁定所有工具栏的位置。我想这是一个很常见的功能。
我设法通过以下方式找到了一个锁定单条柱的命令:
toolBar->setMovable(false);
但我不知道如何锁定所有工具栏。
编辑
这个问题曾经包含有关工具栏上下文菜单而不是标准菜单的查询。由于我在其他地方得到了有关上下文菜单的答案,因此我将其从这个问题中删除。
最佳答案
这是一个如何实现它的例子。首先,添加一个 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/