• 5679阅读
  • 4回复

QDialog中一个QPushButton获取不了焦点了 [复制链接]

上一主题 下一主题
离线kkkkkk
 
只看楼主 倒序阅读 楼主  发表于: 2008-09-02
— 本帖被 XChinux 执行加亮操作(2008-09-03) —
  1. MyDialog::MyDialog(QWidget * parent,char* text) : QDialog(parent)
  2. {
  3.     this->setWindowFlags (Qt::Popup);
  4.     this->setGeometry ( QRect (160, 120, 400, 180) );
  5.     yesButton = new QPushButton( tr("Yes") );
  6.     connect(yesButton, SIGNAL (clicked()), this, SLOT (YesDialog()));
  7.    
  8.     noButton = new QPushButton(tr("No"));
  9.     connect(noButton, SIGNAL (clicked()), this, SLOT (NoDialog()));
  10.    
  11.     label = new QLabel(); 
  12.     label->setAlignment(Qt::AlignHCenter);
  13.     label->setText(tr(text));
  14.     QHBoxLayout *layoutH = new QHBoxLayout;
  15.     QVBoxLayout *layoutV = new QVBoxLayout;
  16.     layoutH->addWidget(yesButton);
  17.     layoutH->addWidget(noButton);
  18.     layoutV->addWidget (label);   
  19.     layoutV->addLayout(layoutH);   
  20.     this->setLayout (layoutV);
  21.    
  22.     yesButton->setFocus (Qt::TabFocusReason);
  23.     this->update();
  24. }
  25. MyDialog::~MyDialog()
  26. {
  27. }
  28. void MyDialog::YesDialog()
  29. {
  30.   this->close();
  31. }
  32. void MyDialog::NoDialog()
  33. {
  34.   this->close();
  35. }
  36. /* 主程序调用 */
  37. MyDialog*  pMyDialog = new MyDialog(this, "Confirm?");
  38. pMyDialog->exec();


以前这个yesButton是可以显出获焦被选中的样子的,不知道动了哪里不行了- -!
印象中应该是没动过这个类的,请教各位这个Dialog中QPushButton要获取焦点的话还需要做什么呢?
离线fanzhichao

只看该作者 1楼 发表于: 2008-09-02
搞不懂你的思路:
1.yesButton 和noButton 你创建到哪里去了?根本没有父窗口。
2.就算父窗口是this,你又没指定两个button的形状和位置,那么
显示起来肯定是叠在一起的。
3.this->update(); 有必要吗??

修改以上dd后yesButton可以显出获焦被选中的样子的,一切正常。
如果一个QWidget有焦点,那么它的子窗口中第一个能获取焦点的就会默认被选中。
离线suraid
只看该作者 2楼 发表于: 2008-09-02
用完Layout->addWidget就会自动设置父窗口的
而且人家用layout了,怎么会重叠到一起呢
SuRaid团队主要承接嵌入式、Web、美工、算法设计等业务

团队网址: http://www.suraid.cn
团队博客: http://blog.suraid.cn
团队邮箱: bbs@esuraid.com
离线kkkkkk
只看该作者 3楼 发表于: 2008-09-03
顶一下等真正实现的办法

目前只好用
  1. QApplication::postEvent(this, new QKeyEvent(QEvent::KeyPress, Qt::Key_Right, Qt::NoModifier));
模拟个键盘动作实现
离线kkkkkk
只看该作者 4楼 发表于: 2008-09-04
顶上去一下
快速回复
限100 字节
 
上一个 下一个