应该是平台的差异性导致的问题,你的控件没有设置样式,界面在显示的时候会引用系统的默认样式。从而导致显示效果的差异。
参考解决方法:
在写代码的时候,用css或者setstylesheet()设置一下控件的样式,避免使用系统自带的样式,字体最好也设置一下,这样能保证在不同的平台下,界面效果是一致的。
用css修改一下你控件的样式再试试看
你的UI用什么写的?
在 Qt 4.4 中引入的外星widget是窗口系统未知的widget。 它们没有与之关联的原生窗口句柄。 此功能显着加快了小部件的绘制、调整大小和消除闪烁。
如果您需要原生窗口的旧行为,您可以选择以下选项之一:
1.在您的环境中使用 QT_USE_NATIVE_WINDOWS=1。
2.在您的应用程序上设置 Qt::AA_NativeWindows 属性。 所有widget都将是原生widget。
3.在widget上设置 Qt::WA_NativeWindow 属性:widget本身及其所有祖先都将变为原生(除非设置了 Qt::WA_DontCreateNativeAncestors)。
4.调用 QWidget::winId 来强制一个原生窗口(这意味着 3)。
5.设置 Qt::WA_PaintOnScreen 属性以强制使用本机窗口(这意味着 3)。
建议使用qml编写
qml
要用Qt Quick开发android应用,否则界面会出现很多问题。
相关代码如下:
#include "widget.h"
#include "ui_widget.h"
#include "QPushButton"
#include <QtWidgets/QPushButton>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QPushButton *m_Btn = new QPushButton(this);
m_Btn->setText("一个按钮");
m_Btn->setStyleSheet("background-color:blue");
m_Btn->show();
}
Widget::~Widget()
{
delete ui;
}
在main函数开头增加一段代码:
if(QT_VERSION>=QT_VERSION_CHECK(5,6,0))
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
int main(int argc, char *argv[])
{
if(QT_VERSION>=QT_VERSION_CHECK(5,6,0))
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!