我完成了从Qt4到Qt5的应用程序的迁移,它编译了所有内容,但它在某个时刻崩溃了.我正在调试它,并试图找到原因,但我已达到死胡同:
这是堆栈:

main.cpp第373行:
TouchSwibz w(NULL, NULL, renderMode ? renderMode : AppSettings::RASTERMODE);
Run Code Online (Sandbox Code Playgroud)
当它到达断点并且我试图走得更远时,它会像往常一样崩溃
"此应用程序已请求运行时以不寻常的方式终止它."
并且应用程序输出显示
QWidget: Must construct a QApplication before a QWidget
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
Run Code Online (Sandbox Code Playgroud)
我想也许是因为在创建主窗口时窗口小部件正在初始化,但是可以做些什么来解决这个问题呢?什么是一个好的解决方法?我甚至都不知道这是不是真正的问题.我使用Qt 5.2.1在Windows 7 x64下工作,使用mingw 4.8 32bit编译,应用程序也在32位.一切都使用相同的工具包编译.我不知道我能提供什么其他有用的信息.我试着踩到QwtSlider构造函数但我不能.
我收到以下错误:
command: npx cucumber-js .\cucumber-e2e\
import { Given, When, Then } from '@cucumber/cucumber';
^^^^^^
SyntaxError: Cannot use import statement outside a module
at Object.compileFunction (node:vm:352:18)
at wrapSafe (node:internal/modules/cjs/loader:1032:15)
at Module._compile (node:internal/modules/cjs/loader:1067:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1157:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at C:\dev\FrontSystems.KeystonePortal\Keystone.Web\ClientApp\node_modules\@cucumber\cucumber\lib\cli\index.js:122:17
at Array.forEach (<anonymous>)
at Cli.getSupportCodeLibrary (C:\dev\xxxxx\xxxx.Web\ClientApp\node_modules\@cucumber\cucumber\lib\cli\index.js:120:26)
at Cli.run (C:\dev\xxxx\xxxx.Web\ClientApp\node_modules\@cucumber\cucumber\lib\cli\index.js:145:41)
at async Object.run [as default] (C:\dev\xxxxx\xxxx.Web\ClientApp\node_modules\@cucumber\cucumber\lib\cli\run.js:25:18)codepath: C:\dev\xxxxx\xxxx.Web\ClientApp\cucumber-e2e\step-definitions\catalog.steps.ts
Run Code Online (Sandbox Code Playgroud)
步骤文件:
import { Given, When, Then } from '@cucumber/cucumber';
Given('A bank account with starting balance of …Run Code Online (Sandbox Code Playgroud) 我正在开发一款Android应用.EditTexts存在这个问题,因为在某些设备中"背景"是白色的(这是我想要的方式),但在其他设备上是透明的,并且使应用程序不那么专业.这是一张带有"白色背景"的图片:

在其他设备上,说"Yo"和"Casa"的编辑文本是透明的,所以单词与地图混合,非常糟糕.
我试过改变android layout xml中的背景颜色.最接近的是我相信@ drawable/white,但稍微改变了编辑文本的位置和大小,使它们看起来像是一个,甚至是最差的.这是一个例子:
有没有一个很好的方法来解决这个问题?我在某处读到了一个选项是在编辑文本中添加白色背景图像,但看起来很麻烦.
更新
我尝试添加背景图像,但它与使用android:背景将背景颜色更改为任何颜色相同,编辑文本变得更小或者其他东西.我在图像中添加了一个蓝色的"分隔符",这是结果:

但我希望他们喜欢在第一张照片中,而不是彼此如此接近.
这将是edittext布局XML的代码,另一个看起来非常相似.只需将android:background标签从图片1添加到图片3即可
解决方案
为了解决这个问题,我所做的是设置背景图像并在dp中设置其高度,如下所示:
<EditText
android:id="@+id/markerTitle"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_alignParentLeft="true"
android:layout_below="@+id/buttonModifymarker"
android:ems="10"
android:inputType="textPersonName"
android:text="Título"
android:background="@drawable/editwhite"
>
Run Code Online (Sandbox Code Playgroud) 我目前正在将一个巨大的项目从Qt 4.x迁移到5.2.1,在此错误之前,一切都相当不错,我发现它非常令人困惑,因为它位于Qt文件中,我相信解决方案必须应用于其他地方,不在位于5.2.1\mingw48_32\include/QtCore/qglobal.h的qglobal.h中.错误必定发生在其他地方.
继承人错误:
..........\Qt5\5.2.1\mingw48_32\include/QtCore/qglobal.h:681:85:错误:'sizeof'无效应用于不完整类型'QStaticAssertFailure' 枚举{Q_STATIC_ASSERT_PRIVATE_JOIN(q_static_assert_result ,COUNTER)= sizeof(QStaticAssertFailure)} ^
..........\Qt5\5.2.1\mingw48_32\include/QtCore/qglobal.h:686:47:注意:扩展宏'Q_STATIC_ASSERT'#define Q_STATIC_ASSERT_X(条件,消息)Q_STATIC_ASSERT(条件)^
..........\Qt5\5.2.1\mingw48_32\include/QtCore/qobject.h:520:5:注意:在扩展宏'Q_STATIC_ASSERT_X'Q_STATIC_ASSERT_X(QtPrivate :: HasQ_OBJECT_Macro :: Value, ^
这是qglobal.h中的代码段
// Intentionally undefined
template <bool Test> class QStaticAssertFailure;
template <> class QStaticAssertFailure<true> {};
#define Q_STATIC_ASSERT_PRIVATE_JOIN(A, B) Q_STATIC_ASSERT_PRIVATE_JOIN_IMPL(A, B)
#define Q_STATIC_ASSERT_PRIVATE_JOIN_IMPL(A, B) A ## B
#ifdef __COUNTER__
#define Q_STATIC_ASSERT(Condition) \
enum {Q_STATIC_ASSERT_PRIVATE_JOIN(q_static_assert_result, __COUNTER__) = sizeof(QStaticAssertFailure<!!(Condition)>)}
#else
#define Q_STATIC_ASSERT(Condition) \
enum {Q_STATIC_ASSERT_PRIVATE_JOIN(q_static_assert_result, __LINE__) = sizeof(QStaticAssertFailure<!!(Condition)>)}
#endif /* __COUNTER__ */
#define Q_STATIC_ASSERT_X(Condition, Message) Q_STATIC_ASSERT(Condition)
#endif
Run Code Online (Sandbox Code Playgroud)
我已经尝试了所有的东西,并研究了所有相关的,但没有找到一个合适的解决方案.我整天浪费在这段恼人的代码中.我希望有人可以就此事发表一些看法.
非常感谢你.
编辑:我搜索了包含qglobal.h的所有文档,但没有一个使用任何断言函数,所以我不知道什么可能触发这样的错误.没有办法qglobal.h是错误的,所以它必须是源代码的东西.
EDIT2:我设法隔离了触发错误的行,显然编译输出提供了比我想象的更多的信息,但它是如此"分离",我认为这是一个警告,无所事事.这是我的应用程序的代码.两条注释行是触发错误的行.对不起,我错了.
bool ISPSModel::removeGraphics(GraphicsPrimitive* …Run Code Online (Sandbox Code Playgroud) 将项目从Qt4迁移到Qt5我得到了这个错误,我已经研究过,显然你不能从QObject创建一个派生类的复制构造函数(这是不可思议的,因为这段代码不是我的,它应该在以前的版本中编译).复制构造函数并不真正复制任何QObject值,我不知道QList thingy有什么问题.
In file included from ..\..\..\..\..\Qt5\5.2.1\mingw48_32\include/QtGui/qwindowdefs.h:45:0,
from ..\..\..\..\..\Qt5\5.2.1\mingw48_32\include\QtWidgets/qwidget.h:45,
from ..\..\..\..\..\Qt5\5.2.1\mingw48_32\include\QtWidgets/QWidget:1,
from ..\marssies\wavingwidget.h:4,
from ..\marssies\wavingwidget.cpp:1:
..\marssies\graphicsprimitive.h: In instantiation of 'void QList<T>::node_construct(QList<T>::Node*, const T&) [with T = SIZArrow]':
..\..\..\..\..\Qt5\5.2.1\mingw48_32\include/QtCore/qlist.h:515:32: required from 'void QList<T>::append(const T&) [with T = SIZArrow]'
..\..\..\..\..\Qt5\5.2.1\mingw48_32\include/QtCore/qlist.h:301:49: required from 'void QList<T>::push_back(const T&) [with T = SIZArrow]'
..\marssies\wavingwidget.cpp:345:23: required from here
In file included from ..\..\..\..\..\Qt5\5.2.1\mingw48_32\include/QtGui/qwindowdefs.h:45:0,
from ..\..\..\..\..\Qt5\5.2.1\mingw48_32\include\QtWidgets/qwidget.h:45,
from ..\..\..\..\..\Qt5\5.2.1\mingw48_32\include\QtWidgets/QWidget:1,
from ..\marssies\wavingwidget.h:4,
from ..\marssies\wavingwidget.cpp:1:
..\marssies\graphicsprimitive.h: In instantiation of 'void QList<T>::node_construct(QList<T>::Node*, const T&) [with T = SIZPolygon]':
..\..\..\..\..\Qt5\5.2.1\mingw48_32\include/QtCore/qlist.h:515:32: required from 'void …Run Code Online (Sandbox Code Playgroud) c++ ×3
qt ×3
android ×1
angular ×1
background ×1
cucumberjs ×1
debugging ×1
migration ×1
node.js ×1
protractor ×1
sizeof ×1
typescript ×1