小编Ste*_*Bay的帖子

Qt升级后,QPushButton有重复的文本

我有一个使用Qt Creator用C++编写的Android应用程序.

Qt版本升级后(从4.85.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)

c++ qt android text qpushbutton

7
推荐指数
1
解决办法
720
查看次数

从现有指针创建新对象 C++

我一直在寻找答案,但仍然无法弄清楚。

抱歉,我的工作太复杂,无法在此处复制示例代码。

我有一个函数,它获取一个指针作为参数;我使用它,但后来,我需要一种回调,我想在其中使用我的旧指向对象。

问题是,当调用此回调时,指针已被删除或释放。我的想法是在堆上创建指向对象的副本,并在回调完成时释放它。但我在指针、复制构造函数和其他东西之间迷失了方向。解决方案可能很简单,但我被困住了。

c++ syntax pointers auto-ptr copy-constructor

4
推荐指数
1
解决办法
1万
查看次数

C++错误的数学表达结果

我必须计算一些简单的数学表达式,但是当我在一行中执行时,结果总是为零.但正确的结果显然不是零.它很有趣但是当我分开表达的部分时,我得到了正确的答案.后来我将除以这个结果,所以它不应该是0.

表达式如下:

(X-X1)/(X2-X1)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,delta:0

double delta = (x - x1) / (x2 - x1);
Run Code Online (Sandbox Code Playgroud)

但这样三角洲将是正确的:

double top = x - x1;
double bottom = x2 - x1;
double delta = top/bottom;
Run Code Online (Sandbox Code Playgroud)

你知道吗,怎么会发生这种情况?

c++ integer-division

-2
推荐指数
1
解决办法
1957
查看次数