2016-05-21 5 views
0

私はstackoverflowの "Tags"フィールドを複製するQtにテキストフィールドを実装したいと思っています(質問を送信するとき)。特定のキーワードはウィジェットに置き換えられます。ウィジェットをバックスペースすると、そのウィジェットを作成するために入力したテキストに置き換える必要があります。このようなことをどうすれば達成できますか?ありがとう。QWidgetsをテキストフィールドに入れる

+0

は、カスタムテキストスタイリングは、あなたがやりたいことには十分ではないですか? – Gwen

答えて

1

まず、QWidgetを継承し、KeyPressイベントとKeyReleaseイベントを実装します。基本的にQLineEditウィジェットを模倣しています。したがって、QLineEditを継承してpaintEvent()を上書きするなど、多くの作業を避けるために再利用可能なコードを探す必要があるかもしれません。

次にpaintEventで、ペインタを使用して非ウィジェットのテキストとウィジェットをレンダリングします。

擬似コード:

SomeWidget::paintEvent(QPaintEvent *) 
{ 
    QPainter painter(this); 

    foreach (object ; objectsToDraw) { 
     if (isText) { 
      painter.drawText(); 
     } else if (isWidget) { 
      widget.render(&painter); 
     } 
    } 
} 
関連する問題