我使用的是Qt 5.3.0.当我在QPushButton的选中状态上应用一些背景颜色时,按钮将在选中时用灰色点(我想要的背景颜色)填充.
这是一个很小的测试程序(使用qtcreator,但它也可以通过编码完成):1,创建一个qt应用程序2,拖入QPushButton,将其设置为flat并检查3,在w.show()之前添加这些行
w.setStyleSheet("\
QPushButton { \
color:white; \
} \
QPushButton:checked{\
background-color: rgb(80, 80, 80);\
}\
QPushButton:hover{ \
background-color: grey; \
border-style: outset; \
} \
");
Run Code Online (Sandbox Code Playgroud)
4,运行应用程序并检查按钮
你会看到按钮变成了点缀但是我需要选中的按钮是纯色的rgb(80,80,80).我错过了什么?
我有一个使用Qt Creator用C++编写的Android应用程序.
Qt版本升级后(从4.8到5.4)我发现了一个奇怪的行为:所有QPushButton都有重复的文本标签,一个位于正确位置,另一个位置偏移了一点.此行为可以在Acer Iconia Tab A700上观察到,但在其他设备(Samsung Galaxy Tab)上则无法观察到.

我在QT Creator中创建了一个全新的QDialog菜单,只使用了图形编辑器,但它显示了同样的东西.
别人是否观察过同样的事情?我在Qt中很新,并且不知道如何解决这个问题......
以下是一些片段:
mydialog.ui
<widget class="QPushButton" name="startButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Start</string>
</property>
<property name="default">
<bool>true</bool>
</property>
</widget>
Run Code Online (Sandbox Code Playgroud)
ui_mydialog.h
public:
QPushButton *startButton;
QPushButton *stopButton;
...
void setupUi(QDialog *MyDialog)
{
... // some layout stuff here
startButton = new QPushButton(MyDialog);
startButton->setObjectName(QStringLiteral("startButton"));
QSizePolicy sizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(startButton->sizePolicy().hasHeightForWidth());
startButton->setSizePolicy(sizePolicy);
startButton->setDefault(true);
... // later
QWidget::setTabOrder(startButton, stopButton);
}
void retranslateUi(QDialog *MyDialog) …Run Code Online (Sandbox Code Playgroud) 我有两个自定义样式的QPushButton按钮.这是Ok按钮的样式表:
QPushButton
{
background-color:#9dce2c;
border-radius:7px;
border:1px solid #83c41a;
color:#ffffff;
font-size:15px;
font-weight:bold;
padding:4px 24px;
text-decoration:none;
}
QPushButton:pressed
{
border:2px solid black;
}
Run Code Online (Sandbox Code Playgroud)
现在这是它的样子:

这很好.但是,如果单击该按钮(获得焦点),它将开始如下所示:

请注意文本周围有轻微的阴影矩形.看起来好像文本被"选中"了.当按钮失去焦点时,它会再次开始正常显示.我想这是因为选中的控件突出显示如下:

但是,我希望我的按钮保持不变,无论它是否专注.有什么方法可以解决这个问题吗?
任何人都可以帮助我,如何将我的QtableView保存为 Excel 文件。我有一个QTableView和 一个 QPushButton(保存按钮)。如果我在我的 QtableView 中输入值并且如果我单击保存按钮 QTableView 项目应保存为 Excel 文件。请帮帮我。谢谢..
这看起来很简单,但我似乎无法弄明白.如何使按钮达到最小宽度.它不断扩展到我放入的布局的宽度.在下面的示例中,QPushButton宽度最终与QLabel相同:
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
class MyWindow(QWidget):
def __init__(self,parent = None):
QWidget.__init__(self,parent)
layout = QVBoxLayout()
layout.addWidget(QLabel('this is a really, really long label that goes on and on'))
layout.addWidget(QPushButton('short button'))
self.setLayout(layout)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud) 我是PySide的新手.我想在其单击的插槽中获取QPushButton obj(例如使用它来获取其文本).
button = QtGui.QPushButton("start go")
button.clicked.connect(self.buttonClick)
def buttonClick(self):
... # How can I get the button object?
# print button.text() how to get the text : 'start go' ?
Run Code Online (Sandbox Code Playgroud)
谢谢!
有关为QPushButton指定快捷方式的文档如下:
快捷键可以通过在首选字符前加上文本中的&符号来指定.例如:
QPushButton *button = new QPushButton("&Download", this);
Run Code Online (Sandbox Code Playgroud)
在此示例中,快捷键是Alt + D.
如果我不想要Alt+[A-Z]快捷方式,该怎么办?例如,在我的情况下,我希望按下按钮时触发我的按钮TAB.我怎样才能达到这个效果?
我需要一个QPushButton,文本中有两种颜色.我在QTextDocument中找到了一个带有html代码的解决方案,它正在运行.但是我需要居中对齐并且html代码不起作用.
QTextDocument Text;
Text.setHtml("<p align=center><font>Button</font><br/><font color=yellow>1</font></p>");
QPixmap pixmap(Text.size().width(), Text.size().height());
pixmap.fill( Qt::transparent );
QPainter painter(&pixmap);
Text.drawContents(&painter, pixmap.rect());
QIcon ButtonIcon(pixmap);
ui->toolButton->setText("");
ui->toolButton->setIcon(ButtonIcon);
ui->toolButton->setIconSize(pixmap.rect().size());
Run Code Online (Sandbox Code Playgroud)
我明白了, 
相同的代码HTML在QLabel中工作
ui->label->setText("<p align=center><font>Label</font><br/><font color=yellow>1</font></p>");
Run Code Online (Sandbox Code Playgroud)

有解决方案吗
非常感谢.
我在创建带有信号和插槽的 QPushButton 时遇到问题。首先,我创建了一个类,其中插槽:
class A : public QWidget{
public slots:
void handleButton();
};
Run Code Online (Sandbox Code Playgroud)
有我的 handleButton 功能:在 .cpp 中
void A::handleButton(int row, int col){
m_button->setText("Example");
// resize button
m_button->resize(100,100);
}
Run Code Online (Sandbox Code Playgroud)
然后我想连接按钮。
QObject::connect(m_button, SIGNAL(clicked()),qApp, SLOT(handleButton()));
Run Code Online (Sandbox Code Playgroud)
但是当我启动应用程序时出现错误:“没有这样的插槽”有人可以帮助我吗?
qpushbutton ×10
qt ×10
c++ ×6
pyqt ×2
android ×1
css ×1
excel ×1
pyside ×1
qlabel ×1
qt4 ×1
qt4.7 ×1
qtableview ×1
qtabwidget ×1
signals ×1
slot ×1
stylesheet ×1
text ×1
windows ×1