在Qt中,如果我右键单击工具栏,将显示允许我隐藏工具栏的菜单.我需要禁用此功能,因为我不希望工具栏可以隐藏.有没有办法做到这一点?
我想在Qt中有一个包含QActions或QToolbarButtons的工具栏,它们附有弹出菜单.通过创建QMenu,将其添加到QToolbarButton然后将其添加到QToolbar,我已经能够在代码中完美地完成此操作.我的问题是,这应该可以在设计师中完全完成.
这是我通过代码完成的工作,我想在qt designer中定义按钮和菜单:

我们想要用qt设计器做的是将代码与接口分开.例如,这意味着一个人可以设计表单的外观和组件,然后程序员可以采用它并编写其背后的功能.如果工具栏和菜单必须由程序员设计,我们无法非常有效地完成此任务.
对于许多应用程序来说,这似乎是一个相当常见的要求,我无法看到Qt如何强制在代码而不是设计器中完成此操作.
如果有人对如何做到有任何想法,也许我在Qt中遗漏了一些东西?
我想制作一个带有一些动作的QToolBar,每个动作都是"可检查的"(也就是说,我在创建它之后对每个动作调用setCheckable(true),这使得按钮在点击后处于关闭状态).
我可以想到"取消选中"其他按钮的唯一方法是挂钩每个按钮的触发信号,并在选中给定按钮时取消选中其他按钮.
有没有更好的办法?
我正在尝试使用 stylesheet 中的以下内容在 Qt 设计器中设置 QToolBar 的背景颜色background : rgb(30, 30, 30)。出于某种原因,背景颜色仅适用于动作的背景,如图像中所示。如何更改整个工具栏的颜色?
编辑。
即使我改变了整个窗口的背景颜色,工具栏的区域也不受影响:
这是一个空的默认 Qt 小部件应用程序,其中我只添加了一个 QToolBar 和一个 QAction 以及我的 QMainWindow 的样式表
background : red;
QToolBar { background : red }
QToolButton {background : red}
这是预期的行为还是 linux 上的 qt 错误?
编辑。
我在使用 Qt 4.8 和 Qt 5.4.2 的 Xubuntu 14.04 上尝试了这段代码。这似乎是 Qt 上的一个错误。请参阅下面我自己的答案。
我有一些 QWidget (QLineEdit),我想将它对齐到 QToolbar 的右侧。
有什么简单的方法可以做到吗?
在浮动工具栏中恢复具有QCombobox的QMainWindow状态时,我看到一个问题。恢复浮动工具栏后,我的QCombobox无法获得焦点,直到我单击工具栏手柄并将其移动。以下是显示问题的gif,使用QT 5.13。

文件float_toolbar.pro
QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = floating_toolbar
TEMPLATE = app
DEFINES += QT_DEPRECATED_WARNINGS
 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
CONFIG += c++11
SOURCES += \
        main.cpp \
        mainwindow.cpp
HEADERS += \
        mainwindow.h
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
档案:main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w; …我希望从一个切换QToolButton到另一个QToolBar.我已经习惯了QStackedWidget,它们从一个移动widget到另一个太简单了,但在这里我无法通过使用来获得移动方式keyReleaseEvent.
mywindow::mywindow() : QMainWindow()
{   
    widget = new QWidget();
    setCentralWidget(widget);
    tool = new QToolBar();
    vertical = new QVBoxLayout();
    button1 = new QToolButton();
    connect( button1, SIGNAL(clicked()), this, SLOT(fileNew()) );
    button2 = new QToolButton();
    button3 = new QToolButton();
    button1->setIcon(QIcon("download.jpg"));
    button1->setGeometry(0,0,100,200);
    button2->setIcon(QIcon("images.jpg"));
    button3->setIcon(QIcon("settings-icon.jpg"));
    //stack1->addWidget(button1);
    //stack1->addWidget(button2);
    //stack1->addWidget(button3);
    tool->addWidget(button1);
    tool->addWidget(button2);
    tool->addWidget(button3);
    //tool->addWidget(stack1);
    vertical->addWidget(tool);
    widget->setLayout(vertical);
}
void mywindow::keyReleaseEvent(KeyEvent *event)
{
    switch(event->key())
    {
        case:Qt::Key_Left:
    }
}
我正在使用 PyQt5、QMainWindow,我想将工具栏的默认位置更改为右侧。我该怎么做?
用户可以使用鼠标将工具栏移动到窗口的边缘,但是如何使用程序来做到这一点呢?
def initUI(self):
    self.toolbar = self.addToolBar('Example')
我已经QActions添加到QToolBarusing addAction().
我希望工具栏按钮工具提示显示快捷方式。例如复制(Ctrl+C)。当然,我可以静态设置
action->setTooltip(QString("%1 (%2)").arg(action.toolTip(), action->shortcut().toString(QKeySequence::NativeText)));
然而,这非常麻烦,因为有很多操作,并且用户可以修改快捷方式,因此我必须跟踪并相应更新。如果我可以通过类似于http://doc.qt.io/qt-5/qtwidgets-widgets-tooltips-example.htmlQToolBar的子类来简单地修改工具提示行为,那就更好了。QToolBar
不幸的是,事情没那么简单。工具提示不是由其本身生成的QToolBar,而是显然是由QToolButton使用时在内部创建的addAction()。所以理想情况下我会注入我自己的QToolButton. 但这似乎是不可能的,因为工具按钮的实际实例化是在我无法访问的私有 QToolBarLayout 内完成的。
有什么想法如何解决这个问题吗?
我正在尝试扩大 QIcon,但它不起作用。
class Example(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        exitIcon = QPixmap('./icons/outline-exit_to_app-24px.svg')
        scaledExitIcon = exitIcon.scaled(QSize(1024, 1024))
        exitActIcon = QIcon(scaledExitIcon)
        exitAct = QAction(exitActIcon, 'Exit', self)
        exitAct.setShortcut('Ctrl+Q')
        exitAct.triggered.connect(qApp.quit)
        self.toolbar = self.addToolBar('Exit')
        self.toolbar.addAction(exitAct)
        self.setWindowTitle('Toolbar')
        self.show()
当我运行应用程序时,它似乎不起作用。我试过用 QPixmap 和直接用 QIcon 加载图标,但无论如何它都是一样的小尺寸。
我在这里做错了什么?