2010-10-06 119 views
0

我有两个小部件mainwindow123和第二类。在我的MainWidget.cpp中有一个lineedit和button字段。最初,我可以将重点放在编辑行上。但是在从second.cpp Widget传出后,我无法将重点放在lineedit上。请帮助我。我犯了哪个错误?提前致谢。QLineEdit焦点事件

这是我的代码 MainWidget.cpp

MainWidget::MainWidget(QWidget *parent) : 
     QWidget(parent), 
     ui(new Ui::MainWidget) 
    { 
     ui->setupUi(this); 
     s = new second(); 
     connect(ui->pushButton, SIGNAL(clicked()),this,SLOT(callSecond())); 

    } 

    MainWidget::~MainWidget() 
    { 
     delete ui; 
    } 
    void MainWidget::callSecond() 
    { 
     s->show(); 

    } 

second.cpp

second::second(QWidget *parent) : 
    QWidget(parent) 
{ 
    QPushButton *first = new QPushButton("first"); 
    first->setStyleSheet(
     "background-color:black;" 

    ); 
    QGridLayout *d = new QGridLayout(); 

    d->addWidget(frist,0,0,1,1); 
    setLayout(d); 
    connect(first,SIGNAL(clicked()),this,SLOT(first())); 
} 

void second:: first() 
{ 
    this->hide(); 
} 

回答

5

这是因为你的注意力转到按钮,你点击后它。

  1. 设置一个focusProxy http://doc.qt.io/qt-4.8/qwidget.html#setFocusProxy
  2. 按钮禁用强烈关注:您可以通过实现它http://doc.qt.io/qt-4.8/qwidget.html#focusPolicy-prop
  3. 连接按钮,点击信号,你QLineEdit的的的setFocus插槽
+0

话,请提供示例代码?提前致谢。 – Finder 2010-10-06 11:24:08

+0

例如哪种情况? – 2010-10-06 11:38:56

+0

我在mainWidget.cpp中使用了这两行this-> ui-> lineEdit-> setFocusProxy(this-> ui-> lineEdit); this-> ui-> lineEdit-> setFocusPolicy(Qt :: StrongFocus);并且这行在callSecond()方法中。this-> ui-> lineEdit-> setFocus(Qt :: OtherFocusReason); 。这是对的吗 ? – Finder 2010-10-06 11:51:38