如何在不破坏非活动选择颜色的情况下更改 wxTextCtrl 的背景颜色
How to change the background colour of a wxTextCtrl without breaking the inactive selection colour?
我想通过将文本字段的背景设置为错误时为红色,在成功输入时设置为白色来指示 wxGTK 应用程序中的输入错误。但是,当通过SetBackgroundColor
设置背景颜色时,非活动选区的背景颜色将设置为相同的颜色。在将背景色设置为白色时,这会导致非常不希望出现的情况:由于所选文本的前景色为白色,而所选文本的背景色现在也是白色,因此文本不可读。
如何重置 wxTextCtrl 上的颜色,以便非活动所选文本具有灰色背景(SetBackgroundColor 之前的默认设置)? 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 textn");
text->SetDefaultStyle(wxTextAttr(wxNullColour, *wxLIGHT_GREY));
text->AppendText("Red on grey textn");
text->SetDefaultStyle(wxTextAttr(*wxBLUE);
text->AppendText("Blue on grey textn");
这很可能允许您独立更改文本的颜色和/或更改文本本身的颜色。以下是指向 wxTextCtrl 文档的链接,我在其中找到了此代码片段:http://docs.wxwidgets.org/2.8/wx_wxtextctrl.html
问候罗恩
试过这个,它有效:
TextCtrl1->SetBackgroundColour(wxColour(0xFF,0xA0,0xA0));
TextCtrl1->SetStyle(0, -1, TextCtrl1->GetDefaultStyle());
相关文章:
- 在没有太多条件句的情况下,我如何避免被零除
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 在未初始化映射的情况下,将值插入到映射的映射中
- 是默认情况下分配给char数组常量的值
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在已经使用Git的情况下减少编译时间
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 如何在没有信号的情况下从C++执行QML插槽
- 如何在不知道向量大小的情况下输入向量内部的向量?
- 为什么在某些情况下不写入此文件?
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 在没有Xcode的情况下在Mac捆绑包中嵌入框架
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 为什么需要复制构造函数,在哪些情况下它们非常有用
- 如何在不破坏非活动选择颜色的情况下更改 wxTextCtrl 的背景颜色
- 在不声明成员变量的情况下更改按钮颜色
- 如何在不更改原始颜色的情况下使用着色器
- 在给定前景色和背景色的情况下,我如何计算第三种颜色
- 如何在不更改所有文本颜色的情况下设置单个单词的颜色