我使用 Qt Designer 创建了一个包含大量 QPushButton 的 UI 文件,然后使用 pyuic4 将其转换为 python 文件。
我想将所有 QPushButton 添加到 QButtonGroup 中。
如何迭代或获取所有 QPushButtons 以从 UI Python 文件添加到 QButtonGroup 中?
我创建了一个自己的GridPushButton类来存储gridlayout中的按钮位置.父母是QPushButton.我在窗口询问它的x和y坐标时有问题(比如x:654,y:768).我以为它将继承自基类,但事实并非如此.现在我有两个选择:
使用原始QPushButton类并以某种方式获得它在gridlayout中的位置(如x:0,y:1,如果它在第一行和第二列)或
使用我的GridPushButton并以某种方式获取窗口中的x和y坐标.
class GridPushButton : public QPushButton
{
Q_OBJECT
public:
GridPushButton(int coordX, int coordY, QWidget *parent = 0);
int coordinateX() { return _coordX; }
int coordinateY() { return _coordY; }
protected:
int _coordX;
int _coordY;
};
Run Code Online (Sandbox Code Playgroud)这是我的班级.我试图创建一个新的私有变量并给它QPushButton::x(),但不起作用.有没有想过从父母那里获得x和y坐标?或者想知道QPushButtons在GridLayout中获得该职位的想法?
qroupBoxButtons = new QGroupBox();
QGridLayout *layout = new QGridLayout;
pushButtonPlus = new QPushButton( tr( "+" ) );
layout -> addWidget( pushButtonPlus, 1, 1 );
/* add another elements to layout */
layout -> setColumnStretch( 1, 25 );
/* set column stretch to other columns */
qroupBoxButtons -> setLayout( layout );
/* add qroupBoxButtons to another QGroupBox's layout
Run Code Online (Sandbox Code Playgroud)
我正在尝试像这样设置100%的高度:
pushButtonPlus -> setStyleSheet( " QPushButton { height: 100%; } " );
Run Code Online (Sandbox Code Playgroud)
要么:
pushButtonPlus -> setSizePolicy( QSizePolicy::Ignored, QSizePolicy::Ignored );
Run Code Online (Sandbox Code Playgroud)
但这不正常。按钮始终具有100%的宽度,只有标准高度。当窗口调整大小时,它保持在一个高度。
如何在不使用resize事件的情况下设置100%的高度?
我尝试手动创建组合框。因此,行编辑应与(下拉)按钮结合使用。因此我想隐藏行编辑的右边框和按钮的左边框。
我尝试过这个:
myLineEdit->setStyleSheet("QLineEdit{border-right: none;}");
myPushButton->setStyleSheet("QPushButton{border-left:none;}");
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
myLineEdit->setStyleSheet("QLineEdit{border: 1px 1px 0px 1px;}");
Run Code Online (Sandbox Code Playgroud)
但两者都不起作用。我哪里错了?
我有两个状态QPushButton.我想将图标与每个州相关联.
就像音乐播放器中的播放|暂停按钮一样.
为此,我想获取当前的图标名称,以便知道下一个要设置的图标是什么.
我可以继承QPushButton,但它值得吗?
在一个小部件中,我放了两个 QPushButton(让我们说左边的“OK”和右边的“EXIT”)。当我使用鼠标按下它们时,它们会定期工作。假设我想使用 TAB 键从一个切换到另一个:这可能吗?怎么能做到这一点?
我想发送两个整数,string 和 fret,到一个 SLOT,它将处理被按下的按钮的位置。SIGNAL 和 SLOT 参数必须匹配,所以我想我需要重新实现 QPushButton::clicked 事件方法。问题是我是 Qt 的新手,可以使用一些指导。
connect(&fretBoardButton[string][fret], SIGNAL(clicked()), this, SLOT (testSlot()));
Run Code Online (Sandbox Code Playgroud) 我有一个 QLineEdit 字段和一个 QPushButton。只要 QLineEdit 为空,就应该禁用该按钮。
怎么做?
当我运行下面的代码时,它显示如下。为什么 x 不是“x”而是变成布尔值?这种情况仅发生在传递到用 lambda 调用的函数中的第一个参数上。
假 y /home/me/model/some_file
from PyQt5.QtWidgets import QPushButton
modelpath = '/home/me/model'
filelist = os.listdir(modelpath)
x = 'x'
y = 'y'
def HelloWidget(QWidget):
def __init__(self):
for file in filelist:
button = QPushButton(file)
button.clicked.connect(lambda x=x,y=y,file=file: self.myfunction(x,y,file)
def myfunction(self,x,y,file):
print(x)
print(y)
print(file)
Run Code Online (Sandbox Code Playgroud) 我有多个按钮,想知道单击了哪个按钮。我已经发现了错误,并且知道该sender()函数必须QWidget与类对象一起使用,但我无法找出解决方案。
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
"""Widget code here"""
self.btn1 = QtWidgets.QPushButton(self.widget)
"""Button properties here"""
self.btn1.setObjectName("btn1")
self.btn1.clicked.connect(self.btnListener)
self.btn2 = QtWidgets.QPushButton(self.widget)
self.btn2.setObjectName("btn2")
self.btn2.clicked.connect(self.btnListener)
"""..... more buttons"""
def btnListener(self):
sender_button = self.sender() # Error Ui_MainWindow has no attribute sender
print(sender_button)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud) qpushbutton ×10
qt ×6
python ×4
c++ ×2
pyqt5 ×2
qlineedit ×2
css ×1
height ×1
icons ×1
lambda ×1
loops ×1
pyqt ×1
pyside ×1
qgridlayout ×1
qt-signals ×1
stylesheet ×1