我想用一个if-else语句来检查是否QPushButton点击了.
我怎样才能做到这一点?.
我需要一个按钮来填充或不填充QGridLayout创建按钮时单元格提供的整个空间(对齐值从文件加载)。我用以下代码简化了我的情况。在运行时,用户可以设置按钮的对齐方式——要么填充整个布局单元格,要么很好地居中。只要按钮没有以指定的 NULL 对齐方式开始,它就可以工作。然而,我需要能够以 NULL 对齐开始(即按钮填充布局单元格的空间)。当最初与 NULL 对齐时,是什么设置使按钮锁定到 AlignVCenter 设置中,我怎样才能让按钮返回到像它是用空对齐以外的其他东西初始化的一样?
我在 Ubuntu 12.04 LTS 上使用 Qt 4.8
#include <QPushButton>
#include <QGridLayout>
#include <QMainWindow>
#include <QApplication>
class MyWidget : public QWidget {
Q_OBJECT
QPushButton* m_pb;
QGridLayout* m_gl;
protected slots:
void pbClicked();
public:
MyWidget(QWidget* parent = 0);
};
MyWidget::MyWidget(QWidget* parent): QWidget(parent)
{
m_pb = new QPushButton(tr("push me"));
connect(m_pb, SIGNAL(clicked()), this, SLOT(pbClicked()));
m_gl = new QGridLayout();
//use (1) to see button expand when button is pressed
//use (2) to show that I …Run Code Online (Sandbox Code Playgroud) 我找不到一个好的答案:有没有办法双击执行某个功能,然后单击另一个功能?例如:
def func1(self):
print('First function')
def func2(self):
print('Second function')
self.ui.button.clicked.connect(self.func1)
self.ui.button.doubleClicked.connect(self.func2)
Run Code Online (Sandbox Code Playgroud)
我已经看到双击是可能的,QTreeview但不是QPushButton. 谢谢!
我的触摸用户界面左上角的后退按钮在电阻式触摸屏上有点难以按下,因为屏幕边缘的触摸事件不是那么精确。
按钮的视觉尺寸不能真正增加,因为其他东西需要屏幕空间。因此,我只想增加按钮的可点击区域。因此,当用户触摸屏幕左上角的某处(如红色标记)时,应按下后退按钮。请注意,红色区域也与另一个按钮重叠。理想情况下,可视按钮状态也会更改为“按下”状态。

谁能给我一些正确方向的指示?我已经考虑了以下事项,但我不确定哪些会起作用。
QWidget,它具有红色区域的大小(具有不可见背景)并包含实际按钮。然后将触摸事件传递给按钮,以便在用户触摸空白区域时按下按钮。QPushButton和重新实现QAbstractButton::hitButton以接受按钮区域之外的点。但我想当我触摸小部件区域之外时,甚至可能不会调用该函数。我在视频前面创建了一个按钮(使用QVideoWidget和QMediaPlayer).我正在使用具有透明背景的图像来设置图像按钮.
如何将QPush按钮设置为透明,但内部图像是否可见?我尝试将其设置为透明,但图像的背景变为黑色.
我在Qt上尝试过这个C++:控制标签和按钮的透明度,但它不起作用.我试过这个:
ui->btn_Touchme->setAttribute(Qt::WA_TranslucentBackground);
ui->btn_Touchme->setStyleSheet("QPushButton{background: transparent;}");
ui->btn_Touchme->setAttribute(Qt::WA_NoSystemBackground, true);
ui->btn_Touchme->setAttribute(Qt::WA_TranslucentBackground, true);
Run Code Online (Sandbox Code Playgroud)
它仍然是黑色的
我尝试使用QLabel,但我得到了相同的结果.对我有什么建议吗?
我使用的是qt 5.3.2和ubuntu 14.04LTS
使用Python 3.2x和PyQT 4.8x:
我初始化了一个动作并分配给一个菜单项:
self.__actionOpen = QtGui.QAction(self.__mw)
self.__actionOpen.setObjectName("actionOpen")
self.__actionOpen.setText("OpenFile")
QtCore.QObject.connect(self.__actionOpen, QtCore.SIGNAL("triggered()"), self.__accessFile)
self.__menuFile.addAction(self.__actionOpen)
Run Code Online (Sandbox Code Playgroud)
工作正常 - 菜单项有标题"OpenFile",并调用动作信号/插槽.
我尝试使用QPushButton - 相同的QAction对象:
self.__buttonFile.addAction(self.__actionOpen)
Run Code Online (Sandbox Code Playgroud)
没有:按钮上没有标题,单击时没有任何反应.
行动不适用于QButton(addAction调用没有抱怨......)?或者我的代码有问题吗?也许"triggered()"信号不适合与QPushButton交互的动作?
我有一个QPushButton我想设置背景颜色.我可以使用样式表:
m_iconButton->setStyleSheet("QPushButton {"
"background-color: red "
"}");
Run Code Online (Sandbox Code Playgroud)
但是我想在函数中使用它void foo(const QColor& a_color).我如何确保样式表将此a_color作为参数?
所以像这样:
void foo(const QColor& color) {
m_iconButton->setStyleSheet("QPushButton {"
"background-color: a_color"
"}");
}
Run Code Online (Sandbox Code Playgroud)
有没有办法用样式表做到这一点?如果没有,我怎么能没有它们呢?
当我按下按钮时,会运行一些耗时的代码。当它运行时,我想避免按钮响应任何进一步的单击。代码完成后,可以重新启用按钮并处理进一步的点击。
我正在尝试使用以下方法来做到这一点:
self.btn.blockSignals(True)
self.btn.setEnabled(False)
... code ...
self.btn.blockSignals(True)
self.btn.setEnabled(False)
Run Code Online (Sandbox Code Playgroud)
但是,如果我快速单击此按钮 10 次,代码将执行 10 次...
实际上,我会将耗时的代码移至另一个线程。(编辑:但问题仍然是相同的 - 我认为??。实际上解决了它。请参阅已接受的答案。)
当某些程序正在运行时,如何阻止或忽略对按钮的点击?
这是我的代码的最小版本:
import time
import sys
from PyQt4 import QtGui
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
grid = QtGui.QGridLayout()
self.setLayout(grid)
self.btn = QtGui.QPushButton('Count')
grid.addWidget(self.btn, 1, 1)
self.txt1 = QtGui.QTextEdit()
grid.addWidget(self.txt1, 1, 2)
self.btn.clicked.connect(self.click)
self.count = 0
self.show()
def click(self):
# Here I want to block any further click in the button, but it is
# not …Run Code Online (Sandbox Code Playgroud) 我正在用 Python 开发一个应用程序,我希望将一组特定的按钮设置为禁用,直到首先单击另一个按钮。例如,当我按下 Sim 卡按钮时,我希望将 Sim Report 按钮设置为启用。
我尝试使用此解决方案来实现该功能:How to make Push Button立即禁用?但它只会禁用按钮 5 秒钟。我只想在相应按钮满足条件时启用特定按钮。我不想生成报告,除非数据已经基本上被解析。
# import Statements
from PyQt5 import QtCore, QtGui, QtWidgets
# from PyQt5.QtWidgets import QMessageBox, QWidget
from reportViewerWindow import Ui_reportViewerWindow
import os
# Main Class that holds User Interface Objects
class Ui_MainWindow(object):
# Function for Opening Report Viewer Window From Main Window by clicking View Reports button
def openReportViewer(self):
self.window = QtWidgets.QMainWindow()
self.ui = Ui_reportViewerWindow()
self.ui.setupUi(self.window)
self.window.show()
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setFixedSize(834, 428)
sizePolicy …Run Code Online (Sandbox Code Playgroud) 我想创建QPushButton与QIcon左对齐(不向中心为默认)和文本居中对齐.我不想使用样式表.我知道可能会使用,QPainter但我无法做到.我几乎没有线索并试过这段代码:
void MyPushButton::paintEvent(QPaintEvent *)
{
QStylePainter painter(this);
QStyleOptionButton opt;
initStyleOption(&opt);
painter.drawItemPixmap(opt.rect, Qt::AlignLeft, opt.icon);
painter.drawItemText(opt.rect, Qt::AlignCenter, palette(), 1, opt.text);
painter.drawPrimitive(QStyle::PE_PanelButtonCommand, opt);
}
Run Code Online (Sandbox Code Playgroud)
这会产生此错误消息
没有匹配函数来调用'QStylePainter :: drawItemPixmap(QRect&,Qt :: AlignmentFlag,QIcon&)'painter.drawItemPixmap(opt.rect,Qt :: AlignCenter,opt.icon);
上面的代码有什么问题?
qpushbutton ×10
qt ×8
python ×4
c++ ×3
pyqt ×2
pyqt4 ×2
pyqt5 ×1
python-3.4 ×1
qaction ×1
qlabel ×1
qlayout ×1
qpainter ×1
qstylesheet ×1
qt-designer ×1
qwidget ×1
touch ×1