我通常是C ++的新手,因此我需要一些QT帮助.我正在尝试将图像添加到按钮中,并且我一直在遇到问题.这是我拥有的示例: #include QPushButton *button; button = new QPushButton(Example); button->setObjectName(QStringLiteral("button")); button->setGeometry(0,0,128,56); 所以我有一张保存在/example/pics/example.png中的图片(示例是项目名称),我想在按钮上使用它.我已经解决了一段时间,找不到解决方案,因此任何帮助都得到赞赏. 解决方案 button->setIcon(QIcon("/example/pics/example.png")); 其他解决方案 在pyqt5/pyside2中,这就是我使用的: icon = QIcon() pixmap =
以下是关于 qpushbutton 的编程技术问答
我正在尝试创建GUI键盘.我正在使用 qpushbutton 复制键.我还没有专注于将其链接到MIDI.但是,我想知道是否可以使用Qpushbutton的属性创建类.我的意思是函数,例如qpushbutton.move/resize/setstylesheet. 目前的代码很长(如下所示).这是由于代码不断重复来制作每个按钮.但是,我注意到诸如大小,样式表和位置(仅在y轴上)之类的属性是相同的,主要区别是X轴和黑色钥匙之间的Y轴.如果要上课,我将如何创建具有各种属性的对象? 再次,如果我的逻辑有缺陷或我犯了任何错误,请随时让我知道. import sys from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QPushButton, QAction, QLineEdit, QMessageBox, QLabel \ ,QDialog from PyQt5.QtGui import QIc
我正在尝试做到这一点,以使当我单击qpushbutton时绘制一条线.但是,我现在拥有的代码在启动代码而不是之后的时,在开始上将行构成. Qpushbutton似乎没有任何图纸. 我也不完全理解为什么在绘制功能中需要一个"事件"参数. import sys from PyQt5 import QtCore, QtWidgets from PyQt5.QtWidgets import QMainWindow, QGridLayout,QPushButton, QApplication, QWidget from PyQt5.QtCore import QSize, QCoreApplication, Qt from PyQt5.QtGui import QPainter, QPen class MainWindow(QMainWindow): def __init__(self): QMainWindow.__init__(self)
我有一个继承的小部件game_widget,其中我声明了9 QPushButton,该QPushButton通过方法init_ui存储在数组中,以及一个应该放置按钮的布局小部件.在构造函数中也称为init_ui函数.这是类的主要元素: class game_widget : public QWidget { Q_OBJECT public: // The layout widget for the buttons QWidget* gridLayoutWidget = new QWidget(this); QPushButton** fields; // Fields list QPushButton* field1 = new QPushButton(gridLayoutWidget); ... QPushButton* field9 = new QPushButton(gridLayoutWidget
,当我单击我的信息更新时,我需要在Qlabel中更改文本. 当我更改A的值时,B的值也必须更改. 我有两个按钮可以更改两个qlabel中的值(a的值,值为b). main.cpp: Counter A, B; QObject::connect(&A, &Counter::changeValue, &B, &Counter::setValue); QObject::connect(&A, &Counter::changeValue, &B, &Counter::Increment); QObject::connect(&A, &Counter::changeValue, &B, &Counter::Decrement ); QObject::connect(Add, &QPushButton::clicked, &A, &Counter::clickedAdd(QLabel* obj)); QObject::connect(Sub, &QPushButton::click
我有两个州qpushbutton.我想将一个图标与每个状态相关联. 就像播放|音乐播放器中的暂停按钮. 为此,我想获取当前的图标名称,以了解下一个要设置的图标. 我可以亚级qpushbutton,但值得吗? 解决方案 使用qpushbutton :: icon()和qicon :: name()获取图标名称. 其他解决方案 而不是基于QPushButton状态设置图标,而是设置一个具有两个状态的QIcon,QT将选择正确的图标,如果您将其与可校验QPushButton. p> QIcon icon = QIcon(); // 'Off' state corresponds to unchecked state of QPushButton icon.addPixmap( QPixmap( ":/img/play.png" ), QIcon::Normal, QIcon::Off ); // 'On' state corresponds to check
我想将两个整数(字符串和fret)发送到一个将处理按下按钮的位置的插槽.信号和插槽参数必须匹配,因此我认为我需要重新进来qpushbutton ::单击事件方法.问题是我是QT的新手,可以使用一些方向. connect(&fretBoardButton[string][fret], SIGNAL(clicked()), this, SLOT (testSlot())); 解决方案 如果使用 c ++ c ++ 11连接语法 testSlot使用您的string和fret参数: connect(&fretBoard[string][fret], &QPushButton::clicked, [this, string, fret]() { testSlot(string, fret); }); 此代码使用[captures, ...](arguments, ...) { code }语法创建lambda.当您建立连接时,它会捕获string和fret变
我是QT的新手,正在制作一个小部件,该小部件与现有的GUI相连.我想在用户按下按钮,然后在释放它时连续输出另一个信号,然后将小部件连续输出一个信号. 通过启用自动座,我可以在用户按下按钮时使小部件输出我的信号,但是,输出信号在按下()和释放()之间开关.例如. 输出: *按下信号 *释放信号 *按下信号 *释放信号 我已经看到这个问题已经问 keypressevents ,但我不确定如何访问按钮.有人可以给我这个建议吗? 解决方案 一种方法是您可以使用计时器对象实现此目的.下面是一个示例,当按钮按下并释放按钮时,它将运行2个插槽.代码评论将详细解释.按下按钮并释放一个文本框时,将显示连续的时间以毫米秒.计时器是将在给定间隔中发射超时()信号的对象.我们需要停止并启动按钮按/释放信号中的备用计时器.此应用程序使用QT创建者" QT Widgets Application"向导创建. 希望这有所帮助. //标题文件 class MainWindo
我正在通过子类创建自定义按钮类.但是,由于某种原因,将班级的CSS设置为构造函数没有影响.我必须这样做,例如paintEvent,一切都很好.我只能拥有一个全局.qss文件并为整个应用程序设置它,但是我希望该类管理自己的样式.我的方法为什么不起作用? 代码: custicpushbutton.h class CustomPushButton: public QPushButton { Q_OBJECT public: explicit CustomPushButton(QWidget *parent = 0); ~CustomPushButton() = default; }; custicpushbutton.cpp CustomPushButton::CustomPushButton(QWidget *parent) : QPushButton(parent) { setStyleSheet("background
我正在使用QT创建者制作计算器.有一个具有GUI的默认MainWindow表格.在mainwindow.cpp中,我设置了setMousetracking(true),以在单击时获取鼠标坐标.但是,只有在MainWindow表单中的任何按钮外进行单击时,我才能获得鼠标坐标.我想这与以下事实有关:当单击按钮时,已经生成了某种类型的鼠标事件来处理该单击. 单击一个按钮时,我需要获得坐标.我该怎么做? 解决方案 首先:这是一个坏主意:) 您要做的是捕获发送给子对象的事件.做到这一点的一种方法是重新实现儿童对象的事件处理程序.但是,当您使用设计师构建界面时,这会变得有些困难.您必须宣传所有小部件才能重新完成它们的版本. 另一种方法是使用QT的"均匀过滤"功能.您实现了基于QObject的类,该类实现了通用事件处理程序功能.然后,将此对象安装为目标对象上的"事件过滤器".一个简单的均匀过滤类看起来像这样; class Filter : public QObject { p
如何自定义qpushbutton或qtoolbutton的外观以看起来像Elementaryos的网页"按钮"? 我真正想要的只是特征图像位置和文本,也许如果我幸运的话,我也可以得到这样的边框,但是我真的不需要标题下方的小描述:) 我只能使用样式表来执行此操作,还是我必须为qpushbutton/qabstractbutton/类似的东西进行QPUSHBUTTON/QPUSHBUTTON?我已经到处搜索过,但没有找到这种定制水平> 编辑: 我真的想要一个可以为我提供一个可自定义按钮的解决方案,而不是固定图像, 的曲目中的某些内容 MainWindowButton(QString(title), /*opt*/QString(description), QImage(icon)); 解决方案 有许多方法可能起作用. 您可能首先考虑尝试用正常QPushButton组成一个QVBoxLayout>的解决方案.您可以添加三个QLabels;一个用于标题文本,一个用于字幕文
我有一个qtableWidget,对于所有行,我将一个列的setCellWidget设置为一个列为一个按钮. 我想将此按钮连接到删除此行的函数. 我尝试了此代码,该代码不起作用,因为如果我简单地单击我的按钮,则不会将当前行设置为按钮的行. ui->tableWidget->insertRow(ui->tableWidget->rowCount()); QPushButton *b = new QPushButton("delete",this); ui->tableWidget->setCellWidget(ui->tableWidget->rowCount()-1,0,b); connect(d,SIGNAL(clicked(bool)),this,SLOT(deleteThisLine())); ... void MainWindow::deleteThisLine() { int row = ui->tableWidget->currentRow();
我正在为QT按钮小部件编写弹出菜单.每当单击按钮时,菜单都会弹出(按下按钮下方). 默认情况下,弹出菜单在下面左侧. 有什么方法可以使弹出菜单在按钮下方的右侧弹出? 没有设定的位置功能,所以我想知道是否有一些复杂的方法? 这是一些代码(用于弹出菜单): QMenu *menuMode = new QMenu(this); min = menu ->addAction("In"); mout = menu ->addAction("out"); ui->pushButtonMode->setMenu(menuMode); //I am writing in MainWindow, that's there is ui 解决方案 这可以通过对qmenu进行划分并移动弹出菜单来完成,您想在showEvent中使用它 popupmenu.h #ifndef POPUPMENU_H #define POPUPMENU_H #incl
当我运行下面的代码时,它显示以下内容.为什么X'X'但不成为布尔值?这仅发生在第一个参数传递到lambda的函数中. false 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
我对整个事情的工作方式感到非常困惑. 我有一些我投入到这样的小组中的推动: MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); AddSlotsToGroup(); } void MainWindow::AddSlotsToGroup() { QButtonGroup* group = new QButtonGroup(this); group->addButton(ui->slot_0); group->addButton(ui->slot_1); //... } 我想创建一个插槽,该插槽获取该组中单击的按钮的ID. (对不起,如果我解释不好:() 所以这就是我所做的(纯粹的搜索后猜测) MainWindow::MainWindow(
我在C ++上有一个QT应用程序,我想为Qpushbutton分配一个插槽.但是我想通过一些参数,因为我有一个以上的qpushbutton做类似的事情,所以我想要一个函数,但其中有一个参数,但是QT一直说我没有这样的插槽.有人可以告诉我为什么以及我应该怎么做? 预先感谢您 在.h文件中我拥有:(它是一开始是私人的,但我在搜索问题时更改了它) ) public slots: void handleButton(int row, int col); 然后在.cpp中: void fieldWindow::handleButton(int row, int col){ cout buttonsField[i][j], SIGNAL(released()), this, SLOT(handleButton(i,j)));
我想使用qpushbutton和qmenu构建下拉列表控件,如下所示: QPushButton* menuBt = new QPushButton("Please select"); menuBt->setFlat(true); QMenu* menu = new QMenu(); menuBt->setMenu(menu); QWidgetAction* wa1 = new QWidgetAction(menu); QLabel* l1 = new QLabel("Option1"); wa1->setDefaultWidget(l1); menu->addAction(wa1); QWidgetAction* wa2 = new QWidgetAction(menu); QLabel* l2 = new QLabel("Option2"); wa2->setDefaultWidget(l2); menu->addAction(wa2); menu->setStyleSheet(
我可以添加一些小部件,例如 qlabel 和 qpushbutton 实际上,我想做这样的事情: 我正在使用C ++和QT. 谢谢 解决方案 是可能的,只需使用 qtabwidget :: setcornerwidget qtabwidget . 快速示例: QWidget* pTabCornerWidget = new QWidget(this); QLabel* pLabelTime = new QLabel(pTabCornerWidget); pLabelTime->setText("10:22:20"); QPushButton* pButton = new QPushButton(pTabCornerWidget); pButton->setText("?"); pButton->setMaximumSize(QSize(25, 25));
我想让我的应用笔记本电脑友好.我可以在无处不在,但是如果我标记为 qpushbutton 我可以't用 Enter 按 space . 有什么问题?如何使其适用于 Enter ? 解决方案 tl; dr 在QT创建者的UI视图中,选择要制作的按钮 Enter . . 在属性编辑器的右侧,向下滚动到标题为QPushButton的蓝色部分. 选中autoDefault或default的复选框. 大多数情况下,autoDefault和default之间的主要不同是按钮的呈现方式.但是在某些情况下,它会引起意外的事情,因此有关更多信息,请阅读更多信息. 完整评论 概述 每个QPushButton具有未继承的3个属性.从中,两个(default和autoDefault)在我们将按钮放在QDialog s上时具有重要作用,因为这些设置(以及对一个按钮的关注点)决定如果我们按 enter . 默认情况下,所有这些属性都是错误的.只有autoDefault,