点击QToolPush显示26位键盘的问题

一世豁然 2015-10-15 04:56:50
我用QT设计师设计了一个keydoard快捷按钮,ObjectName 命名为keyboardfast。也
设计了一个如手机上的常见键盘的26位键盘,ObjectName 命名为keyboard。
我想要的效果就是点击keyboardfast按钮,其26位键盘的keyboard界面就显示出来。
我试过许多方法,但总是失败!
请问该怎么实现?
...全文
304 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
冷静忍耐 2015-10-23
  • 打赏
  • 举报
回复
引用 18 楼 Explorer_day 的回复:
[quote=引用 16 楼 u013466477 的回复:] [quote=引用 14 楼 Explorer_day 的回复:] 我把代码改了一下就成功了代码如下: void login::on_pushButton_clicked() //pushButton为点击“键盘”的按键,其text属性也为“键盘” { keyboard *showkeyboard = new keyboard(); //keyboard为26位键盘的类名 showkeyboard->show(); //在这有个奇怪的问题,用show()可以,但是用raise()却不行 } 在这谢谢各位的指导。@gldcpp @专注创业产品开发 @u013466477
用raise()是因为怕界面被挡住,所以把想显示的放到上面,用raise()后,还是要用show()。[/quote] raise()和show()难道不是一样的吗?[/quote] 额,不一样,rasie只是把控件放到最上面显示,防止被挡住
一世豁然 2015-10-23
  • 打赏
  • 举报
回复
引用 16 楼 u013466477 的回复:
[quote=引用 14 楼 Explorer_day 的回复:] 我把代码改了一下就成功了代码如下: void login::on_pushButton_clicked() //pushButton为点击“键盘”的按键,其text属性也为“键盘” { keyboard *showkeyboard = new keyboard(); //keyboard为26位键盘的类名 showkeyboard->show(); //在这有个奇怪的问题,用show()可以,但是用raise()却不行 } 在这谢谢各位的指导。@gldcpp @专注创业产品开发 @u013466477
用raise()是因为怕界面被挡住,所以把想显示的放到上面,用raise()后,还是要用show()。[/quote] raise()和show()难道不是一样的吗?
一世豁然 2015-10-23
  • 打赏
  • 举报
回复
引用 15 楼 u013466477 的回复:
你的槽函数响应了吗??qDebug()打印一下。 我觉得你在构造函数手写一下: connect(ui->keyboardfast, SIGNAL(released()), this, SLOT(on_keyboardfast_released()));
我没有用connect()函数,是在QT设计师界面建立的信号槽机制。
冷静忍耐 2015-10-23
  • 打赏
  • 举报
回复
引用 14 楼 Explorer_day 的回复:
我把代码改了一下就成功了代码如下: void login::on_pushButton_clicked() //pushButton为点击“键盘”的按键,其text属性也为“键盘” { keyboard *showkeyboard = new keyboard(); //keyboard为26位键盘的类名 showkeyboard->show(); //在这有个奇怪的问题,用show()可以,但是用raise()却不行 } 在这谢谢各位的指导。@gldcpp @专注创业产品开发 @u013466477
用raise()是因为怕界面被挡住,所以把想显示的放到上面,用raise()后,还是要用show()。
冷静忍耐 2015-10-23
  • 打赏
  • 举报
回复
你的槽函数响应了吗??qDebug()打印一下。 我觉得你在构造函数手写一下: connect(ui->keyboardfast, SIGNAL(released()), this, SLOT(on_keyboardfast_released()));
一世豁然 2015-10-23
  • 打赏
  • 举报
回复
我把代码改了一下就成功了代码如下: void login::on_pushButton_clicked() //pushButton为点击“键盘”的按键,其text属性也为“键盘” { keyboard *showkeyboard = new keyboard(); //keyboard为26位键盘的类名 showkeyboard->show(); //在这有个奇怪的问题,用show()可以,但是用raise()却不行 } 在这谢谢各位的指导。@gldcpp @专注创业产品开发 @u013466477
一世豁然 2015-10-23
  • 打赏
  • 举报
回复
引用 12 楼 gldcpp 的回复:
[quote=引用 11 楼 Explorer_day 的回复:] [quote=引用 10 楼 gldcpp 的回复:] [quote=引用 7 楼 Explorer_day 的回复:] [quote=引用 4 楼 gldcpp 的回复:] 先debug一下看你的槽函数连接好了没有,如果连接好了看看是不是如上所说在底层看不到被遮掩了,最好把代码发出来看看
我怀疑可能就是不同的ui文件信号槽机制没有建立起来。[/quote] 恕我愚钝,你这种一个文件加两个ui的做法我从来没用过--。。。通常你要的这种效果需要新建一个dialog,然后在dia的UI里编辑,最后通过emit信号在login里面接收来达到控制的效果[/quote] 两个ui文件不能相互通信?点击主要窗口的pushbutton来显示另一个窗口实现起来很麻烦吗?[/quote] 不麻烦啊 但是你这种直接两个ui的我真没用过,你在button的槽函数里直接把你做好的dialog show()出来就行了 很简单,可能我接触的太少,添加两个ui我是没见过的 像这样--void MainWindow::Set_slot() { setdia=new MyDialog(this); // setdia->setModal(true); // setdia->exec(); setdia->show(); connect(setdia,SIGNAL(sendrange(QString,QString)),this,SLOT(gettime(QString,QString))); }[/quote] 我是在QT设计右击-》点击“转到槽”来建立信号与槽机制的,代码如下:
void login::on_pushButton_clicked()                         //pushButton为点击“键盘”的按键,其text属性也为“键盘”
{
     keyboad->raise();
     //keyboard->show();                      //keyboard为26位键盘的类名
}
但没有作用。
gldcpp 2015-10-20
  • 打赏
  • 举报
回复
引用 7 楼 Explorer_day 的回复:
[quote=引用 4 楼 gldcpp 的回复:] 先debug一下看你的槽函数连接好了没有,如果连接好了看看是不是如上所说在底层看不到被遮掩了,最好把代码发出来看看
我怀疑可能就是不同的ui文件信号槽机制没有建立起来。[/quote] 恕我愚钝,你这种一个文件加两个ui的做法我从来没用过--。。。通常你要的这种效果需要新建一个dialog,然后在dia的UI里编辑,最后通过emit信号在login里面接收来达到控制的效果
gldcpp 2015-10-20
  • 打赏
  • 举报
回复
引用 11 楼 Explorer_day 的回复:
[quote=引用 10 楼 gldcpp 的回复:] [quote=引用 7 楼 Explorer_day 的回复:] [quote=引用 4 楼 gldcpp 的回复:] 先debug一下看你的槽函数连接好了没有,如果连接好了看看是不是如上所说在底层看不到被遮掩了,最好把代码发出来看看
我怀疑可能就是不同的ui文件信号槽机制没有建立起来。[/quote] 恕我愚钝,你这种一个文件加两个ui的做法我从来没用过--。。。通常你要的这种效果需要新建一个dialog,然后在dia的UI里编辑,最后通过emit信号在login里面接收来达到控制的效果[/quote] 两个ui文件不能相互通信?点击主要窗口的pushbutton来显示另一个窗口实现起来很麻烦吗?[/quote] 不麻烦啊 但是你这种直接两个ui的我真没用过,你在button的槽函数里直接把你做好的dialog show()出来就行了 很简单,可能我接触的太少,添加两个ui我是没见过的 像这样--void MainWindow::Set_slot() { setdia=new MyDialog(this); // setdia->setModal(true); // setdia->exec(); setdia->show(); connect(setdia,SIGNAL(sendrange(QString,QString)),this,SLOT(gettime(QString,QString))); }
在飞的特拉斯 2015-10-20
  • 打赏
  • 举报
回复
你这样操作试试,新建一个同名的 UI设计师类,然后把你原先设计好的UI替换掉你新生成的UI文件,注意大小写。
一世豁然 2015-10-20
  • 打赏
  • 举报
回复
引用 10 楼 gldcpp 的回复:
[quote=引用 7 楼 Explorer_day 的回复:] [quote=引用 4 楼 gldcpp 的回复:] 先debug一下看你的槽函数连接好了没有,如果连接好了看看是不是如上所说在底层看不到被遮掩了,最好把代码发出来看看
我怀疑可能就是不同的ui文件信号槽机制没有建立起来。[/quote] 恕我愚钝,你这种一个文件加两个ui的做法我从来没用过--。。。通常你要的这种效果需要新建一个dialog,然后在dia的UI里编辑,最后通过emit信号在login里面接收来达到控制的效果[/quote] 两个ui文件不能相互通信?点击主要窗口的pushbutton来显示另一个窗口实现起来很麻烦吗?
gldcpp 2015-10-19
  • 打赏
  • 举报
回复
先debug一下看你的槽函数连接好了没有,如果连接好了看看是不是如上所说在底层看不到被遮掩了,最好把代码发出来看看
冷静忍耐 2015-10-19
  • 打赏
  • 举报
回复
界面keyboard->raise()试一下
一世豁然 2015-10-19
  • 打赏
  • 举报
回复
引用 1 楼 u013466477 的回复:
总是失败是什么失败??显示不出来吗? 估计keyboard界面显示在你界面底下,所以显示了你也看不到
这我就不知道了,反正就是看不到26键盘的界面。
冷静忍耐 2015-10-19
  • 打赏
  • 举报
回复
引用 6 楼 Explorer_day 的回复:
[quote=引用 3 楼 u013466477 的回复:] 界面keyboard->raise()试一下
没有作用。[/quote] 编译提示你没有,那肯定哪里写错了。 那你手动写看一下: connect(ui->button, SIGNAL(released()), this, SLOT(on_keyboardfast_released()));
一世豁然 2015-10-19
  • 打赏
  • 举报
回复
引用 4 楼 gldcpp 的回复:
先debug一下看你的槽函数连接好了没有,如果连接好了看看是不是如上所说在底层看不到被遮掩了,最好把代码发出来看看
我怀疑可能就是不同的ui文件信号槽机制没有建立起来。
一世豁然 2015-10-19
  • 打赏
  • 举报
回复
引用 3 楼 u013466477 的回复:
界面keyboard->raise()试一下
没有作用。
一世豁然 2015-10-19
  • 打赏
  • 举报
回复




如图,为两个界面以及工程图。
我要点击“键盘”按钮,来显示以上keyborad界面。这是两个ui文件的的“通信”问题了。在login界面
我用QT设计的右击“转到糟”来建立信号与糟机制,其生成一个槽函数void on_keyboardfast_clicked()函数
代码如下:
void login::on_keyboardfast_clicked()
{
ui->keyboard->show(); //此代码中的keyboard不是界面的keyboard,系统好像检测不出来,加了头文件
//ui->keyboard->raish(); //#include"ui_keyboard.h"也一样
}

编译的时候提示没有与void login::on_keyboardfast_clicked()相符合的信号。
怎么回事?
冷静忍耐 2015-10-15
  • 打赏
  • 举报
回复
总是失败是什么失败??显示不出来吗? 估计keyboard界面显示在你界面底下,所以显示了你也看不到

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧