3

wxGTK アプリケーションで、テキスト フィールドの背景をエラー時には赤に、入力成功時には白に設定して、入力エラーを知らせたいと考えています。ただし、 で背景色を設定SetBackgroundColorすると、非アクティブな選択範囲の背景色が同じ色に設定されます。これにより、背景色を白に設定すると、非常に望ましくない状況が発生します。選択したテキストの前景色が白で、選択したテキストの背景色も白になるため、テキストが判読できなくなります。

wxTextCtrl の色をリセットして、非アクティブな選択テキストの背景が灰色になるようにするにはどうすればよいですか (SetBackgroundColour の前のデフォルト設定)。SetBackgroundStyle( wxBG_STYLE_SYSTEM)は私の最初の推測でしたが、wxGTK には影響しません。

コード例:

#include <wx/textctrl.h>
#include <wx/frame.h>
#include <wx/defs.h>
#include <wx/app.h>

class App : public wxApp {
    bool OnInit() {
        wxFrame* frame = new wxFrame(NULL, wxID_ANY, wxT("Frame"));
        wxTextCtrl* text = new wxTextCtrl( frame, wxID_ANY, wxT("foo bar") );
        text->SetBackgroundStyle( wxBG_STYLE_COLOUR );
        text->SetBackgroundColour( *wxWHITE );
        frame->Show();
        return true;
    }
};

IMPLEMENT_APP( App );
4

2 に答える 2

2

SetDefaultStyle を試してみることもできます。私自身は試していませんが、wxwidgets のドキュメントからの抜粋を次に示します。

text->SetDefaultStyle(wxTextAttr(*wxRED));
text->AppendText("Red text\n");
text->SetDefaultStyle(wxTextAttr(wxNullColour, *wxLIGHT_GREY));
text->AppendText("Red on grey text\n");
text->SetDefaultStyle(wxTextAttr(*wxBLUE);
text->AppendText("Blue on grey text\n");

これにより、テキストとは独立して色を変更したり、テキスト自体の色を変更したりできる可能性が高くなります。このコード スニペットを見つけた wxTextCtrl ドキュメントへのリンクは次のとおりです

よろしく、ロイン

于 2012-07-12T13:33:14.107 に答える
0

これを試してみましたが、うまくいきます:

  TextCtrl1->SetBackgroundColour(wxColour(0xFF,0xA0,0xA0));
  TextCtrl1->SetStyle(0, -1, TextCtrl1->GetDefaultStyle());
于 2018-05-18T21:35:37.063 に答える