$B@8M}3X8&5f=j$NB<ED$G$9!#(B
QTextEdit $B>e$G1&%/%j%C%/$9$k$H!"(B $B%3%s%F%-%9%H%a%K%e!<$,I=<($5$l$^$9$,!"(B $B0lEY%a%K%e!<$rJD$8$k$H!"$=$N8e(B $BI=<($5$l$J$/$J$j$^$9!#(B $B!J$?$@$7!"%&%#%s%I%&$r:G>.2=$7$?$j!"%?%$%H%k%P!<$r(B $B%/%j%C%/$7$?$j$9$k$H:F$SI=<($5$l$k$h$&$K$O$J$j$^$9!#!K(B
======== $B0J2<$,3:Ev$N%3!<%I$G$9(B ======== #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(); } ========================================
$B0J2<$N$h$&$K%l%$%"%&%H%^%M!<%8%c(B(QVBoxLayout)$B$r(B $B;H$&$h$&$K=$@5$7$?$H$3$m!"(B $B>e=R$N8=>]$,H/@8$7$J$/$J$j$^$7$?!#(B
======== $B=$@58e$N%3!<%I(B ======== #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!"); $B$N2U=j$r(B edit->setHtml("Hello Qt!"); $B$H$7$?$j!"(B QTextEdit $B$NBe$o$j$K(B QPlainTextEdit $B$r;H$C$F(B edit->setPlainText("Hello Qt!"); $B$H$+$7$F$b%l%$%"%&%H%^%M!<%8%c$r;H$o$J$$$H(B $BF1MM$N8=>]$,H/@8$7$^$9!#(B
Qt$BB&$NIT6q9g$G$7$g$&$+!)(B
$B$J$*!"$3$A$i$G;n$7$?(B Qt $B$N%P!<%8%g%s$O0J2<$NDL$j$G$9!#(B Windows $BHG(B Qt 5.5.0 Linux $BHG(B Qt 5.4.2
鈴木です。
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
-- 村田 安永
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
生理学研究所の村田です。
下記のサイトにて検索してみたところ、 同様の症状に関する登録が既にされているのを確認しました。 以下の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
-- 村田 安永