标签: qaction

QTenu中QActions的QTooltip

我希望能够显示QMenu项目的工具提示QAction.我所取得的最好成绩就是将一个悬停的信号连接QAction到一个QTooltip节目:

connect(action, &QAction::hovered, [=]{
    QToolTip::showText(QCursor::pos(), text, this);
});
Run Code Online (Sandbox Code Playgroud)

问题是有时程序会将工具提示定位在菜单下方,特别是在更改菜单时.

有没有办法强制工具提示显示在顶部?

c++ qt tooltip qmenu qaction

10
推荐指数
2
解决办法
3501
查看次数

无法隐藏QMenu对象QMenu :: setVisible()?

我已经建立了QMenu MainMenu我的上顶MainWindow在我的应用程序.每个人都习惯了,我有以下QMenu主菜单:

文件 - 编辑 - SuperHeavyExpertMenus - 设置 - 帮助

我想SuperHeaverExpertMenus在程序启动时最初隐藏子树,因为它会包含很多设置,这可能会使初学者用户感到困惑.

例如,我想SuperHeavyExpertMenu在"设置"中的复选框为真时显示该子树.

我可以隐藏孩子QActions的的QMenu上述S,争夺QAction:setVisible(false).但我能做到这一点QMenu吗?

有没有办法隐藏QMenu

qt qmenu qt5 qaction qt5.3

10
推荐指数
1
解决办法
3222
查看次数

为什么QToolTips不会出现在QMenu中的QActions上

我正在用GUI编写的应用程序PySide.我设置了QMenu一个QPushButton,添加了几个QActionsvia QMenu.addAction.为了进一步说明这些行动给用户我说QToolTip的这些带QAction.setToolTip.

当我运行GUI时,我QToolTip将无法显示.下面发布的示例再现了同样的问题,任何想法?

提前致谢

import sys
from PySide import QtGui

class Example(QtGui.QPushButton):

    def __init__(self, parent = None):
        super(Example, self).__init__(parent)

        self.setText('TestMenu')
        self.setToolTip('This is a Test Button')

        menu = QtGui.QMenu(self)
        action_1 = menu.addAction('Action1')
        action_1.setToolTip('This is action 1')
        action_2 = menu.addAction('Action2')
        action_2.setToolTip('This is action 2')
        action_3 = menu.addAction('Action3')
        action_3.setToolTip('This is action 3')
        action_4 = menu.addAction('Action4')
        action_4.setToolTip('This is action 4')

        self.setMenu(menu)
        self.show()

def main():
    app = QtGui.QApplication(sys.argv)
    ex = …
Run Code Online (Sandbox Code Playgroud)

python pyside qmenu qaction

8
推荐指数
2
解决办法
3065
查看次数

我想知道是否用鼠标左键或右键单击QAction

我有一个QActionQMenu.当QActiontriggered()我想知道哪个按钮做到了.

connect(YourAction, SIGNAL(triggered()), this, SLOT(actionclicked()));

void MainWindow::actionclicked(QMouseEvent *e)
{
    if (e->buttons() == Qt::RightButton) 
}
Run Code Online (Sandbox Code Playgroud)

我不能做这样的事情,因为triggered()没有这样的论点.

c++ qt qmenu qaction

7
推荐指数
1
解决办法
1212
查看次数

为什么PyQt执行我的动作三次?

我对PyQt还是个新手,但我真的不知道为什么会这样.

我有一个我这样创建的主窗口:

class MainWindow(QtGui.QMainWindow):
    #initialize
    def __init__(self):
        #Call parent constructor
        super(MainWindow, self).__init__()

        #Load the interface
        self.ui = uic.loadUi(r"Form Files/rsleditor.ui")

        #Show the ui
        self.ui.show()
Run Code Online (Sandbox Code Playgroud)

当我想用以下方法覆盖close事件时:

def closeEvent(self, event):
    quit_msg = "Are you sure you want to exit the program?"
    reply = QtGui.QMessageBox.question(self, 'Message', 
              quit_msg, QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)

    if reply == QtGui.QMessageBox.Yes:
        self.saveSettings()
        event.accept()
    else:
        event.ignore()
Run Code Online (Sandbox Code Playgroud)

我读过我必须把uic.loadUI电话换成:

self.ui = uic.loadUi(r"Form Files/rsleditor.ui", self)
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,我的所有行为都开始被掀起三次.我很确定我在添加它之前正确设置信号和插槽.有帮助吗?

pyuic文件:

    RSLEditorClass.setIconSize(QtCore.QSize(24, 24))
    self.centralWidget = QtGui.QWidget(RSLEditorClass)
    sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred,    QtGui.QSizePolicy.Preferred)
    sizePolicy.setHorizontalStretch(0)
    sizePolicy.setVerticalStretch(0)
    sizePolicy.setHeightForWidth(self.centralWidget.sizePolicy().hasHeightForWidth())
    self.centralWidget.setSizePolicy(sizePolicy)
    self.centralWidget.setObjectName(_fromUtf8("centralWidget"))
    self.vLayMain = QtGui.QVBoxLayout(self.centralWidget) …
Run Code Online (Sandbox Code Playgroud)

python pyqt signals-slots qaction pyuic

6
推荐指数
1
解决办法
743
查看次数

为什么QMenu的分隔符不显示文本?

我的目标是制作带有标签分隔符的菜单。因此,我正在运行以下代码:

QMenu *menu = new QMenu;

QAction *group1 = menu->addSeparator();
group1->setText("Group of actions #1");
menu->addAction("Action #1");
menu->addAction("Action #2");
menu->addAction("Action #3");

QAction *group2 = menu->addSeparator();
group2->setText("Group of actions #2");
menu->addAction("Action #1");
menu->addAction("Action #2");
menu->addAction("Action #3");

QToolButton btn;
btn.setText("Click me");
btn.setMenu(menu);
btn.setPopupMode(QToolButton::InstantPopup);

btn.show();
Run Code Online (Sandbox Code Playgroud)

并得到这个

QMenu的分隔符文本未显示

而不是这个(我是由MS Paint创建的:))

在此处输入图片说明

怎么了?

编辑:是的,还有另一个类似这样的问题(QMenu中的非交互式项目),但是可能存在更简单的方法吗?

解决方案之一是使用“融合”主题:)我刚刚将以下代码添加到int main函数中:

int main(int argc, char *argv[]) {
    QApplication::setStyle("Fusion");
    QApplication a(argc, argv);
    ...
Run Code Online (Sandbox Code Playgroud)

qt qmenu qaction

5
推荐指数
1
解决办法
1407
查看次数

如何在QAction中使用QTest :: mouseClick

我对Qt非常陌生,我需要使用QTest命名空间和来模拟点击QTest::mouseClick。我的问题是我想单击QMenu定义为的条目,QAction但是该mouseClick函数不允许我将其作为参数传递(仅QWidgetsQWindows)。

我在这里可以做什么?

qt qtestlib qmenu qaction

5
推荐指数
1
解决办法
573
查看次数

使用快捷方式创建QAction,无需插入菜单

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <cassert>

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

    QAction* back = new QAction(this);
    back->setVisible(true);
    back->setShortcut(QKeySequence("Ctrl+M"));
    bool cres = connect(back, SIGNAL(triggered(bool)), this, SLOT(mySlot()));
    assert(cres);
}
Run Code Online (Sandbox Code Playgroud)

在这段代码中,我尝试捕获Ctrl+M关键事件。我不想将操作放在菜单中。connect返回true,但从mySlot不调用。在菜单中插入动作后,快捷方式可以正常工作。我做错了什么?

c++ qt bind qaction

4
推荐指数
1
解决办法
1174
查看次数

如何仅对单击QMenu对象执行操作?

这是GUI的快照.我想通过单击QMenu对象帮助来执行简单的操作.该QMenu对象没有任何子菜单.单击

你能告诉我如何只在QMenu点击时执行操作这是我尝试过的,但我得到了一个空输出.

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDebug>
#include <QSignalMapper>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    void createActions();
    QSignalMapper *pSignalMapper;

private slots:
    void help();

};

#endif // MAINWINDOW_H
Run Code Online (Sandbox Code Playgroud)

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    createActions();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::createActions()
{
    pSignalMapper = new …
Run Code Online (Sandbox Code Playgroud)

qt signals-slots qmenu qaction

3
推荐指数
2
解决办法
1万
查看次数

Qt - 创建图标按钮

我正在尝试在 Google 地图上创建类似于放大、缩小的按钮;我想要只和图标一样大的按钮:

http://codegeekz.com/wp-content/uploads/google-maps-jquery.jpg

(我很抱歉没有发布图片,显然没有足够的声誉)。

我正在尝试使用 QAction 但由于某种原因,按钮没有出现。我已经使用 QAction 在另一个项目中创建按钮,但复制所有相关代码并没有成功(实例根本没有出现)。这些是必需品:

主窗口.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QAction>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);

protected slots:
    void addEntry();

private:
    QAction *addButton;
};
#endif // MAINWINDOW_H
Run Code Online (Sandbox Code Playgroud)

主窗口.cpp

#include "mainwindow.h"
#include <QHBoxLayout>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QWidget *window = new QWidget;
    QVBoxLayout *container = new QVBoxLayout();

    //Horizontal add/subtract layout------------------------------------

    QHBoxLayout *layer1 = new QHBoxLayout();

    QAction *addButton = new QAction((QIcon("/home/kyle/Desktop/add1.png")),"Add Entry", this);

    addAction(addButton);

    connect(addButton, SIGNAL(triggered()), …
Run Code Online (Sandbox Code Playgroud)

c++ qt qaction

3
推荐指数
1
解决办法
5751
查看次数

标签 统计

qaction ×10

qt ×8

qmenu ×7

c++ ×4

python ×2

signals-slots ×2

bind ×1

pyqt ×1

pyside ×1

pyuic ×1

qt5 ×1

qt5.3 ×1

qtestlib ×1

tooltip ×1