QPushButton дублирует текст после обновления Qt

У меня есть приложение для 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);
    }

person Steve M. Bay    schedule 27.04.2015    source источник
comment
Можете ли вы поделиться частью кода, который вы используете?   -  person anonymous    schedule 27.04.2015
comment
Конечно, но, честно говоря, я точно не знаю, где искать такие ошибки.   -  person Steve M. Bay    schedule 28.04.2015
comment
Интересный. Если вы не изменили какой-либо код, автоматически сгенерированный uic, я сомневаюсь, что проблема в этом. Это выглядит странно в Qt Designer? Вы просматривали трекер ошибок Qt на наличие подобных отчетов?   -  person anonymous    schedule 28.04.2015
comment
Да ничего странного в Creator. И да, я просмотрел средство отслеживания ошибок Qt, но ничего похожего.   -  person Steve M. Bay    schedule 28.04.2015
comment
У меня нет других идей. Для меня это пахнет ошибкой, а не чем-то, что вы сделали неправильно или неправильно.   -  person anonymous    schedule 29.04.2015
comment
Еще один интересный факт: на другом устройстве весь интерфейс выглядит иначе. Я поищу используемое определение стиля.   -  person Steve M. Bay    schedule 30.04.2015


Ответы (2)


У меня такая же проблема, я решил ее, установив таблицу стилей. Кажется, проблема с границей, таблица стилей, которая решает проблему:

border-style: outset;
border-width: 2px;
border-radius: 4px;
border-color: black;
padding: 6px;

Я пробовал разные конфигурации, но не могу понять, какая из них решит проблему.

person Vttoo    schedule 18.11.2015
comment
Не знаю о приведенном выше обсуждении вашего ответа, но это решило это для меня, спасибо. - person Ray Burgemeestre; 21.12.2015

Я добился некоторого прогресса!

Мне пришлось воссоздать весь виджет, и на этот раз я увеличил его размер. Просто используя QtCreator, масштабируя основной фрейм виджета. Теперь все метки кнопок отображаются правильно. Кроме того, политика размера элементов пользовательского интерфейса была изменена на Expanding.

Хорошо, я знаю, что это просто лечение, а не решение, которое объясняет, почему это происходит, но теперь я доволен этим результатом.

person Steve M. Bay    schedule 29.05.2015