です。しかし、これにQListWidget(または他の通常のウィジェット)を使用することは可能です。私は概念実証のためのいくつかの実例を開発しました。 QMainWindowをメインウィンドウとするデフォルトのQtウィジェットプロジェクトです。名前が"lineEdit"
のQLineEditを追加し、textChanged
signaのスロットを作成する必要があります。ここでは、コードです:
MainWindow.h
:
class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_lineEdit_textChanged(const QString &arg1);
private:
Ui::MainWindow *ui;
QListWidget* list;
};
MainWindow.cpp
:
#include "MainWindow.h"
#include "ui_MainWindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
list(new QListWidget)
{
ui->setupUi(this);
list->setWindowFlags(Qt::WindowFlags(
Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint));
list->setAttribute(Qt::WA_ShowWithoutActivating);
}
MainWindow::~MainWindow() {
delete list;
delete ui;
}
void MainWindow::on_lineEdit_textChanged(const QString &arg1) {
if (ui->lineEdit->text().isEmpty()) {
list->hide();
return;
}
list->clear();
list->addItem(ui->lineEdit->text());
list->addItem(tr("Google: ") + ui->lineEdit->text());
list->move(ui->lineEdit->mapToGlobal(QPoint(0, ui->lineEdit->height())));
if (!list->isVisible()) list->show();
}
いくつかの問題があります:ラインエディットは、あなたが設定されていないことができ、移動ウィンドウにフォーカスやユーザーを失ったとき、あなたはメニューを非表示にします行編集などの下矢印ボタンを使用してメニューにフォーカスします。しかし、これらの問題はすべて簡単に解決できると思います。
QComboBoxであなたの考えは面白いですが、私はそれを試してみましたが、それが適切ではありません。ありがとうございました。 –