J'essaye d'implémenter une méthode de saisie avec Qt Embedded.Comment faire pour cliquer sur un bouton dans un widget hors-focus sans changer le focus actuel
Il existe une table de correspondance pour choisir les mots candidats à saisir. "zone de saisie de texte" à la "table de recherche" et le mot sélectionné ne peut pas être envoyé à la "zone de saisie de texte".
Dose quelqu'un a une idée pour résoudre ce problème? Merci ~
Ici, je donne un exemple simple:
main.cpp
#include "InputWidget.h"
#include "ButtonWidget.h"
#include <QApplication>
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
InputWidget *inputWidget=new InputWidget();
ButtonWidget *buttonWidget=new ButtonWidget();
inputWidget->show();
buttonWidget->show();
int ref=app.exec();
inputWidget->deleteLater();
buttonWidget->deleteLater();
return ref;
}
InputWidget.h
#include <QWidget>
#include <QPlainTextEdit>
#ifndef _InputWidget_H_
#define _InputWidget_H_
class InputWidget:public QWidget
{
Q_OBJECT
public:
InputWidget(QWidget *parent=0);
private:
QPlainTextEdit *inputArea;
};
#endif
InputWidget.cpp
#include "InputWidget.h"
#include <QPushButton>
#include <QVBoxLayout>
InputWidget::InputWidget(QWidget *parent):QWidget(parent)
{
//input area setup
inputArea=new QPlainTextEdit(this);
//main layout
QVBoxLayout *mainLayout=new QVBoxLayout(this);
mainLayout->setContentsMargins(1,4,1,1);
mainLayout->addWidget(inputArea);
setLayout(mainLayout);
}
ButtonWidget.h
#include <QWidget>
#include <QPushButton>
#ifndef _ButtonWidget_H_
#define _ButtonWidget_H_
class ButtonWidget:public QWidget
{
Q_OBJECT
public:
ButtonWidget(QWidget *parent=0);
private:
QPushButton *selectedBtn;
public slots:
void changeBtnText();
};
#endif
ButtonWidget.cpp
#include "ButtonWidget.h"
#include <QPushButton>
#include <QVBoxLayout>
ButtonWidget::ButtonWidget(QWidget *parent):QWidget(parent)
{
//selectedBtn setup
selectedBtn=new QPushButton(tr("Click Me!!"),this);
connect(selectedBtn,SIGNAL(clicked()),this,SLOT(changeBtnText()));
//main layout
QVBoxLayout *mainLayout=new QVBoxLayout(this);
mainLayout->setContentsMargins(1,4,1,1);
mainLayout->addWidget(selectedBtn);
setLayout(mainLayout);
}
void
ButtonWidget::changeBtnText()
{
selectedBtn->setText("I am clicked :)");
}
Ces codes généreraient un widget qui a une PlainTextEdit "inputArea" et un widget qui a un bouton "selectedBtn".
D'abord, je saisis quelques mots dans "inputArea". Le foucs actuel est sur "inputArea" dans le InputWidget.
Mais quand je déplace la souris vers ButtonWidget et que je clique sur "selectedBtn", le foucs est changé en "selectedBtn" dans le ButtonWidget. Comment puis-je cliquer sur le "selectedBtn" tout en gardant le foucs sur "inputArea"? Merci ~
Tout comme mon commentaire décrit dans la réponse de laura, InputWidget et ButtonWidget peut avoir aucun parent identique et je ne peux pas utiliser la fente « de setFocus » de QWidget pour changer l'orientation actuelle entre eux.
Vous pourriez vouloir expliquer un peu plus, il est difficile de comprendre ce que vous essayez de faire et ce qui ne va pas. Certains extraits de code peuvent également aider les utilisateurs à vous aider. Cliquez simplement sur "modifier" et mettez à jour votre question. – balpha