gpt4 book ai didi

c++ - Tizen Construct() Button 方法失败

转载 作者:太空宇宙 更新时间:2023-11-04 04:01:19 25 4
gpt4 key购买 nike

有人可以帮助解决 Tizen Button 构造问题吗?

Construct() 调用 Button 且应用程序崩溃后,我收到以下日志消息。但在这种情况下,Construct() 返回 E_SUCCESS:

result Tizen::Graphics::_Text::TextObject::SetBounds(const Tizen::Graphics::FloatRectangle&)(1134) > [E_OUT_OF_RANGE] The given rectangle(width:-4.000000,height:12.000000) is out of range.

在下面的代码中:

MainSimpleButton::MainSimpleButton()
{
result res = Construct(FloatRectangle(50, 50, 20, 20), String("Default button"));
if (res != E_SUCCESS)
{
throw Exception("Failed Construct() button");
}
}

这是详细信息。我自定义了 Button 类:

#ifndef MAINBUTTON_H_
#define MAINBUTTON_H_

#include <FApp.h>
#include <FUi.h>
#include <FGraphics.h>

class MainSimpleButton : public Tizen::Ui::Controls::Button {
public:
MainSimpleButton(); // <------- This constructor is used
MainSimpleButton(const Tizen::Graphics::Rectangle &rect, const Tizen::Base::String &text);
MainSimpleButton(const Tizen::Graphics::FloatRectangle &rect, const Tizen::Base::String &text);
virtual ~MainSimpleButton();
};

#endif /* MAINBUTTON_H_ */

通过以下简单实现:

MainSimpleButton::MainSimpleButton()
{
result res = Construct(FloatRectangle(50, 50, 20, 20), String("Default button"));
if (res != E_SUCCESS)
{
throw Exception("Failed Construct() button");
}
}

MainSimpleButton::MainSimpleButton(const Rectangle &rect, const String &text)
{ // Similar to MainSimpleButton }

MainSimpleButton::MainSimpleButton(const FloatRectangle &rect, const String &text)
{ // Similar to MainSimpleButton }

MainSimpleButton::~MainSimpleButton() {}

在此创建此自定义 Button() 的 Add 实例:

void MainForm::InitMainForm(unsigned long formStyle)
{
if (Construct(formStyle) != E_SUCCESS) { throw Exception("MainForm Construct() failed"); }
MainSimpleButton *btn1 = new MainSimpleButton(); // <----- This code
if (AddControl(btn1) != E_SUCCESS)
{
throw Exception("MainForm AddControl() failed");
}
}

最佳答案

一般来说,这是 Tizen 框架问题。建议您使用一键式 UI 应用程序。应用程序结构如下:

UIApp : [ Frame : [ Form : [ Button ] ] ]

这个简单 UI 的初始化调用链如下:

OnAppInitializing():
new Frame() => Frame.Construct() =>
AddFrame(frame):
Frame.OnInitializing():
new Form() => Form.Construct() =>
AddControl(form):
Form.OnInitializing():
new Button() => Button.Construct() =>
AddControl(button):
Button.OnInitializing()

这样做的原因是:对象构造函数不执行任何操作(因为 Tizen 不使用异常),真正的工作是由 Construct() 方法完成的。我们可以通过使用使用构造函数和异常的自定义对象来获得相同的结果。

OnAppInitializing():
new Frame():
Frame.Construct()
new Form():
Form.Construct()
new Button():
Button.Construct()
AddControl(button)
AddControl(form)
AddFrame(frame)

这就是我想做的。

从 Tizen 框架的角度来看,我们应该得到与每次 AddFrame()/AddControl() 函数调用之前相同的结果,我们有有效的链 new Object() => Object.Construct() => AddControl(Object)

但问题可能是,当我在手机上得到相同的结果时,日志不同:

04-05 02:18:04.840 : ERROR / Tizen::Ui::Controls ( 16130 : 16130 ) : Tizen::Ui::Animations::_VisualElement* Tizen::Ui::Controls::_IndicatorManager::GetIndicatorVisualElement(Tizen::Ui::_Window*, Tizen::Ui::Controls::_IndicatorOrientation, Tizen::Ui::_Control*) const(132) > [E_SYSTEM] Unable to get Indicator
04-05 02:18:04.840 : ERROR / Tizen::Ui::Controls ( 16130 : 16130 ) : result Tizen::Ui::Controls::_Indicator::AddIndicatorObject(Tizen::Ui::_Control*, Tizen::Ui::_Window*)(373) > [E_SYSTEM] Indicator can not create the surface.
04-05 02:18:04.840 : ERROR / Tizen::Ui::Controls ( 16130 : 16130 ) : Tizen::Ui::Animations::_VisualElement* Tizen::Ui::Controls::_IndicatorManager::GetIndicatorVisualElement(Tizen::Ui::_Window*, Tizen::Ui::Controls::_IndicatorOrientation, Tizen::Ui::_Control*) const(132) > [E_SYSTEM] Unable to get Indicator
04-05 02:18:04.840 : ERROR / Tizen::Ui::Controls ( 16130 : 16130 ) : result Tizen::Ui::Controls::_Indicator::AddIndicatorObject(Tizen::Ui::_Control*, Tizen::Ui::_Window*)(373) > [E_SYSTEM] Indicator can not create the surface.
04-05 02:18:04.840 : ERROR / Tizen::Ui ( 16130 : 16130 ) : result Tizen::Ui::_Control::SetFocused(bool)(2634) > [E_INVALID_OPERATION] This control should have a parent or be attached to the main tree.

因此我认为 Tizen Framework 不能很好地支持我的方法。

关于c++ - Tizen Construct() Button 方法失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22872177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com