从插槽黑莓 10 获取 TextField->text()
Get TextField->text() from slot Blackberry 10
我是黑莓10开发的初学者。我正在开发一个应用程序,该应用程序应该从文本框中获取用户输入并搜索文本文件中是否出现该单词。我正在使用ActionItem的triggered()信号来调用搜索。但是,当我尝试从插槽中获取用户输入时,它总是返回一个空字符串 ''。我犯了什么错误。
提前谢谢你。
这是代码:
主.qml
TextField {
objectName: "anagram"
hintText: "Enter anagram to search"
verticalAlignment: VerticalAlignment.Center
horizontalAlignment: HorizontalAlignment.Center
input {
submitKey: SubmitKey.Done
}
}
应用.cpp
ActionItem *main = root->findChild<ActionItem*>("search");
bool res1 = QObject::connect(main, SIGNAL(triggered()), this, SLOT(onSearch()));
void ApplicationUI::onSearch()
{
qDebug() << "slot activated";
QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this);
AbstractPane *root = qml->createRootObject<AbstractPane>();
Application::instance()->setScene(root);
TextField* query = root->findChild<TextField*>("anagram");
//THE STRING BELOW ALWAYS RETURNS ''
QString search = query->text();
...
简介
调用槽onSearch
时,您实际上是在创建一个与实际发出信号的 UI 无关的附加 UI。
由于 anagram
的 text 属性没有默认设置,因此您得出的结论是正确的;它将始终生成一个空字符串,因为该字段将始终是新创建的。
溶液
你将需要使用与当前 UI(用户已向其输入数据)关联的root
,而不是创建新 UI。
假设您已将root
声明为 ApplicationUI 的数据成员,下面的操作将执行您所期望(和想要)的操作。
void ApplicationUI::onSearch()
{
qDebug() << "slot activated";
TextField* query = root->findChild<TextField*>("anagram");
QString search = query->text();
// ...
}
<小时 />替代解决方案
您还可以通过在 Application::instance ()
返回的指向AbstractPane
的指针上调用 scene()
来访问当前加载的场景(相当于代码段中的 root
):
AbstractPane * current_scene = Application::instance ()->scene ();
QString search = current_scene->findChild<TextField*> ("anagram")->text ();
相关文章:
- EASTL矢量<向量<int>>连续的
- 使用 sf::Text 数组时崩溃
- 为什么 sf::Text 显示点而不是数字?
- 从DLL导出函数,LoadLibrary()需要用TEXT转换的字符串才能编译而不会出错
- 为 g++ build 设置超时,为 Sublime Text 运行?
- 编辑期间的 QTableWidgetItem text() 属性
- 如何找到目标文件 *.o 的 ram rom 使用情况(.bss .text .rodata .data)?
- 在 Linux 上编译 - 在函数 '_start' 中:(.text+0x20):对 'main' 的未定义引用
- 当我尝试绘制 sf::Text 对象时,SFML 中的分段错误
- 在 .text 部分中定义只读数据的原因是什么?
- (.text+0x20):对"主要"的未定义引用是什么意思
- 如何使用Stroustrup的Fltk Text类调用变量?
- 带有定制 GLFW 二进制 /usr/bin/ld 的 Centos 7: /usr/local/lib/libglfw3.a(init.c.o):".text"部分中无法识别的重定位 (0x2a)
- 从emxArray_uint8_T检测到错误:.text+0xc1):未定义对"emxInit_uint8_T1(emxArray_uint8_T**, int)"的引用?
- Poco c++ 如何从PostgreSQL DB读取"text"数据类型?
- crt1.o:在函数"_start"中:(.text+0x20):对"main"的未定义引用
- Sublime Text 3 在我尝试编译C++代码时在状态栏上显示"No Build System"。为什么?
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- C 字符串比较“祝您好运”&gt;“再见”
- 看起来如此主要的错误.cpp:(.text.startup+0xd6):未定义对"vtable for Counter"的引用?