• 15199阅读
  • 8回复

如何在QLineEdit中输入一串字符串后在触发事件? [复制链接]

上一主题 下一主题
离线泡茉蓝茶
 

只看楼主 倒序阅读 楼主  发表于: 2009-02-10
— 本帖被 XChinux 执行加亮操作(2009-02-10) —
我打算是在QLineEdit中输入一些中文字体,然后这些输入的字体跟我事先做好的文本中内容比较,如果一致,就跳出,不再读取文本内容。我现在碰到的问题是,QLineEdit中输入一个字就触发一次事件,再输入再触发,所以这样永远不会与文本中的内容一致,就会一直读取文本内容,哪位高手能够帮我解答一下,非常感谢!
离线rockyluo

只看该作者 1楼 发表于: 2009-02-10
不要用textchanged
输入完试试用按回车键触发事件!
void returnPressed ()
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线lazybone
只看该作者 2楼 发表于: 2009-02-10
1 楼主想要自动触发不按回车键么?

2 事件触发了可以把焦点设回到QLineEdit
离线泡茉蓝茶

只看该作者 3楼 发表于: 2009-02-10
引用第2楼lazybone于2009-02-10 11:35发表的  :
1 楼主想要自动触发不按回车键么?
2 事件触发了可以把焦点设回到QLineEdit


是的,我原本就是这样的,让它自动触发,不按回车键,其实也没什么一定要这样。针对第2点,能说得详细点吗,刚起步,还是小菜!
离线泡茉蓝茶

只看该作者 4楼 发表于: 2009-02-10
引用第1楼rockyluo于2009-02-10 10:15发表的  :
不要用textchanged
输入完试试用按回车键触发事件!
void returnPressed ()


我先前用的是textchanged,如果改用returnPressed的话,怎么把输入的字符串获取到,再跟文本中的字符串比较?谢谢哦!
离线rockyluo

只看该作者 5楼 发表于: 2009-02-10
connect(lineedit,SIGNAL(returnPressed()),this,SLOT(lineedit_Slot()) );
直接在lineedit_Slot()实现不就可以!
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线泡茉蓝茶

只看该作者 6楼 发表于: 2009-02-10
引用第5楼rockyluo于2009-02-10 13:06发表的  :
connect(lineedit,SIGNAL(returnPressed()),this,SLOT(lineedit_Slot()) );
直接在lineedit_Slot()实现不就可以!


不好意思,还是不明白!
我举个例子吧,如下
connect( LineEdit1,SIGNAL(textChanged(const QString &)),this,SLOT(fuzhi1(const QString &)));
槽函数在实现时如下,这时有个变量text来保存输入的字符串。
void findbase::fuzhi1(const QString &text)
{
QString str(text);
FILE *ww;
    char tt[20];
    int dd;

  if((ww=fopen("hz/convert.txt","r"))!=NULL)
{
    while(fscanf(ww,"%s %d\n",tt,&dd)==2)
    {
        int cmp;
        cmp=strcmp(str,tt);
        if(cmp==0) break;
    }
   
}
fclose(ww);
startid=dd;

}
现在改为returnPressed,那用什么来保存输入的字符串呢?
connect( LineEdit1,SIGNAL( returnPressed () ),this,SLOT(fuzhi1()));
离线rockyluo

只看该作者 7楼 发表于: 2009-02-10
不存在什么保不保存!
text作为一个引用,其值通过textChanged(const QString &)中的参数const QString &传递过来
对于returnPressed () 没有参数,因此连接槽函数也不会去设置参数位
要取得该值,则直接在fuzhi1()函数中调用QLineEdit::text ()

void findbase::fuzhi1()
{
QString str = LineEdit1->text();        //  ***
FILE *ww;
    char tt[20];
    int dd;

  if((ww=fopen("hz/convert.txt","r"))!=NULL)
{
    while(fscanf(ww,"%s %d\n",tt,&dd)==2)
    {
        int cmp;
        cmp=strcmp(str,tt);
        if(cmp==0) break;
    }
   
}
fclose(ww);
startid=dd;

}
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线泡茉蓝茶

只看该作者 8楼 发表于: 2009-02-10
引用第7楼rockyluo于2009-02-10 14:51发表的  :
不存在什么保不保存!
text作为一个引用,其值通过textChanged(const QString &)中的参数const QString &传递过来
对于returnPressed () 没有参数,因此连接槽函数也不会去设置参数位
要取得该值,则直接在fuzhi1()函数中调用QLineEdit::text ()

.......


非常感谢!我还想请教一下,我输入的是中文字,好像不能识别,如果输入数字或者字母的话,倒是可以识别。
不过我加了什么字体转化unicode后还是不能识别,谢谢!
快速回复
限100 字节
 
上一个 下一个