Ste*_*Bay 7 c++ qt android text qpushbutton
我有一个使用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)
{
MyDialog->setWindowTitle(QApplication::translate("MyDialog", "Dialog", 0));
startButton->setText(QApplication::translate("MyDialog", "Start", 0));
stopButton->setText(QApplication::translate("MyDialog", "Stop", 0));
...
}
Run Code Online (Sandbox Code Playgroud)
但同样,我使用Qt Creator GUI来创建对话框,所以我的猜测是这应该是一些配置错误.或者也许与retranslateUi()功能相关的东西?
这就是它在Qt Creator中的样子:

编辑#2
我挖出了一些指令,其中定义了按钮的具体风格.这里是:
foreach (QToolButton* bt, listOfToolButtons) {
bt->setAttribute(Qt::WA_AcceptTouchEvents);
bt->installEventFilter(scrollAreaForToolBar);
bt->setIconSize(QSize(iconSize, iconSize));
bt->setStyleSheet("QToolButton{ background-color: #051a49; border: none;}");
scrollAreaContainer->layout()->addWidget(bt);
}
Run Code Online (Sandbox Code Playgroud)
我取得了一些进展!
我必须重新创建整个小部件,这次我给了它更大的尺寸。只需使用 QtCreator,缩放小部件的主框架。现在,所有按钮标签都可以正确显示。此外,ui 元素的大小策略已更改为Expanding.
好吧,我知道这只是一种治疗方法,而不是解释其发生原因的解决方案,但我现在对这个结果感到满意。
| 归档时间: |
|
| 查看次数: |
720 次 |
| 最近记录: |