У меня есть приложение для Android, написанное на C++ с использованием Qt Creator.
После обновления версии Qt (с 4.8 до 5.4) я заметил странное поведение: все QPushButton получили дублированные текстовые метки, один находится в правильном положении, а другой сдвинут на немного далеко. Такое поведение наблюдается на Acer Iconia Tab A700, но не на другом устройстве (Samsung Galaxy Tab).
Я создал совершенно новое меню QDialog в QT Creator, используя только графический редактор, но оно отображало то же самое.
Кто-то еще наблюдал то же самое? Я совсем новичок в 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>
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));
...
}
Но опять же, я использовал графический интерфейс Qt Creator для создания диалога, поэтому я предполагаю, что это должна быть какая-то ошибка конфигурации. Или, может быть, что-то связанное с функцией 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);
}