生理学研究所の村田です。
下記のサイトにて検索してみたところ、 同様の症状に関する登録が既にされているのを確認しました。 以下の2件です。
QTBUG-9592 Disappearing popup menu in QPlainTextEdit https://bugreports.qt.io/browse/QTBUG-9592
QTBUG-17559 Text cursor not restored when after a context menu is closed in QTextEdit or QLineEdit. https://bugreports.qt.io/browse/QTBUG-17559
未解決の状態ですが、 レイアウトマネージャを使うことで回避できていますので、 このままでも問題ありません。
ありがとうございました。
On 2015/10/05 2:54, Tasuku Suzuki wrote:
鈴木です。
Linux の Qt 5.6 ブランチでも同様の現象が起こります。
単独で QTextEdit を表示するケースは少ないので今まで見過ごされてきたのかもしれません。 https://bugreports.qt.io/ に既にバグが登録されていないか確認してもらえますか? 見つからなかった場合はバグレポートを書いてください。
よろしくお願いします。
2015年10月1日 9:43 MURATA Yasuhisa murata@nips.ac.jp:
生理学研究所の村田です。
QTextEdit 上で右クリックすると、 コンテキストメニューが表示されますが、 一度メニューを閉じると、その後 表示されなくなります。 (ただし、ウィンドウを最小化したり、タイトルバーを クリックしたりすると再び表示されるようにはなります。)
======== 以下が該当のコードです ======== #include <QApplication> #include <QtWidgets>
int main(int argc, char *argv[]) { QApplication app(argc, argv); QTextEdit *edit = new QTextEdit; edit->setText("Hello Qt!"); edit->show(); return app.exec(); } ========================================
以下のようにレイアウトマネージャ(QVBoxLayout)を 使うように修正したところ、 上述の現象が発生しなくなりました。
======== 修正後のコード ======== #include <QApplication> #include <QtWidgets>
int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget *window = new QWidget; QTextEdit *edit = new QTextEdit; edit->setText("Hello Qt!"); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(edit); window->setLayout(layout); window->show(); return app.exec(); } ========================================
edit->setText("Hello Qt!"); の箇所を edit->setHtml("Hello Qt!"); としたり、 QTextEdit の代わりに QPlainTextEdit を使って edit->setPlainText("Hello Qt!"); とかしてもレイアウトマネージャを使わないと 同様の現象が発生します。
Qt側の不具合でしょうか?
なお、こちらで試した Qt のバージョンは以下の通りです。 Windows 版 Qt 5.5.0 Linux 版 Qt 5.4.2
-- 村田 安永