2010-10-06 5 views
0

J'ai deux widget mainwindow123 et de deuxième classe. Dans mon MainWidget.cpp, j'ai un champ lineedit et un bouton. Au départ, je peux mettre l'accent sur l'édition de la ligne. Mais après venir du second.cpp Widget alors je ne pouvais pas mettre l'accent sur le lineedit. S'il vous plaît aidez-moi .. A quel endroit j'ai fait l'erreur? Merci d'avance.Événement de mise au point QLineEdit

C'est mon code 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(); 
} 

Répondre

5

C'est parce que votre foyer passe au bouton après avoir cliqué dessus. Vous pouvez y parvenir par:

  1. Définition d'un focusProxy http://doc.qt.io/qt-4.8/qwidget.html#setFocusProxy
  2. Désactivation accent sur le bouton: http://doc.qt.io/qt-4.8/qwidget.html#focusPolicy-prop
  3. boutons Connexion cliqués signal fente setFocus de votre QLineEdit
+0

pourrait-il fournir le code d'échantillon ? Merci d'avance. – Finder

+0

Exemple pour quel cas? –

+0

J'ai utilisé ces deux lignes dans le mainWidget.cpp this-> ui-> lineEdit-> setFocusProxy (this-> ui-> lineEdit); this-> ui-> lineEdit-> setFocusPolicy (Qt :: StrongFocus); Et cette ligne dans la méthode callSecond() .. this-> ui-> lineEdit-> setFocus (Qt :: OtherFocusReason); . Est-ce correct ? – Finder