gpt4 book ai didi

c++ - 如何在不破坏非事件选择颜色的情况下更改 wxTextCtrl 的背景颜色?

转载 作者:太空狗 更新时间:2023-10-29 21:48:13 27 4
gpt4 key购买 nike

我想在 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 );

最佳答案

您可以尝试使用 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 文档的链接,我在其中找到了这段代码: http://docs.wxwidgets.org/2.8/wx_wxtextctrl.html

问候,罗恩

关于c++ - 如何在不破坏非事件选择颜色的情况下更改 wxTextCtrl 的背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11330092/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com