Я пытаюсь реализовать метод ввода с помощью Qt Embedded.
Существует таблица поиска для выбора слов-кандидатов для набора текста. «область ввода текста» в «справочную таблицу», и выбранное слово не может быть отправлено в «область ввода текста».
У кого-нибудь есть идеи по решению этой проблемы? Благодаря ~
Здесь я приведу простой пример:
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 :)");
}
Эти коды будут генерировать виджет, который имеет PlainTextEdit "inputArea" и виджет, который имеет PushButton "selectedBtn".
Сначала я ввожу несколько слов в поле "inputArea". Текущий foucs находится на «inputArea» в InputWidget.
Но когда я перемещаю мышь к ButtonWidget и щелкаю «selectedBtn», в ButtonWidget значения функций изменяются на «selectedBtn».
Как мне щелкнуть «selectedBtn», но все равно оставить «inputArea»? Благодаря ~
Так же, как мой комментарий, описанный в ответе Лоры, у InputWidget и ButtonWidget не может быть идентичных родителей, и я не могу использовать слот setWocus QWidget для изменения текущего фокуса между ними.