动态设置Edit控件的背景及字体颜色

 

1.新建一个基于对话框的应用程序,在对话框上添加一个Edit控件和三个Radio控件
2.修改Radio控件的ID分别为:IDC_RAD_RED、IDC_RAD_GREED、IDC_RAD_BLUE,名称对应修改为red、green、blue
3.向对话框对应的类中添加如下成员变量:
public:
 COLORREF m_colorEditText; // edit控件的字体颜色
 COLORREF m_colorEditBK;  // edit控件的背景颜色
 CBrush* m_pEditBkBrush;
并在构造函数中初始化:
CColorEditDlgDlg::CColorEditDlgDlg(CWnd* pParent )
 : CDialog(CColorEditDlgDlg::IDD, pParent)
{
 //{{AFX_DATA_INIT(CColorEditDlgDlg)
 //}}AFX_DATA_INIT
 // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
 
 m_colorEditText = RGB(255,255,255);
 m_colorEditBK = RGB(0,0,0);
 m_pEditBkBrush = new CBrush(RGB(0,0,0));
}
4.向对话框添加WM_CTLCOLOR和WM_DESTORY消息的响应函数如下:
HBRUSH CColorEditDlgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
 switch (nCtlColor) {
  
 case CTLCOLOR_EDIT:
 case CTLCOLOR_MSGBOX:
  // Set color to green on black and return the background brush.
  pDC->SetTextColor(m_colorEditText);
  pDC->SetBkColor(m_colorEditBK);
  return (HBRUSH)(m_pEditBkBrush->GetSafeHandle());
  
 default:
  return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
 }

 
}

void CColorEditDlgDlg::OnDestroy()
{
 CDialog::OnDestroy();
 
 // TODO: Add your message handler code here
 delete m_pEditBkBrush;
 
}
5.分别向三个Radio控件添加BN_CLICKED消息响应函数如下:
void CColorEditDlgDlg::OnRadRed()
{
 // TODO: Add your control notification handler code here

 m_colorEditText = RGB(255,0,0);

 // redraw edit control
 ((CEdit *)GetDlgItem(IDC_EDIT1))->SetRedraw(TRUE);

 // invalidate the entire control, force painting
 ((CEdit *)GetDlgItem(IDC_EDIT1))->Invalidate();
 ((CEdit *)GetDlgItem(IDC_EDIT1))->UpdateWindow();
 
}

void CColorEditDlgDlg::OnRadBlue()
{
 // TODO: Add your control notification handler code here
 m_colorEditText = RGB(0,0,255);

 // redraw edit control
 ((CEdit *)GetDlgItem(IDC_EDIT1))->SetRedraw(TRUE);
 
 // invalidate the entire control, force painting
 ((CEdit *)GetDlgItem(IDC_EDIT1))->Invalidate();
 ((CEdit *)GetDlgItem(IDC_EDIT1))->UpdateWindow();

}

void CColorEditDlgDlg::OnRadGreen()
{
 // TODO: Add your control notification handler code here
 m_colorEditText = RGB(0,255,0);

 // redraw edit control
 ((CEdit *)GetDlgItem(IDC_EDIT1))->SetRedraw(TRUE);
 
 // invalidate the entire control, force painting
 ((CEdit *)GetDlgItem(IDC_EDIT1))->Invalidate();
 ((CEdit *)GetDlgItem(IDC_EDIT1))->UpdateWindow();

}

完成后运行程序,点击Radio控件可以动态改变编辑框中字体的颜色,如果想改变edit框背景的颜色,可以修改成员变量m_colorEditBK的值并重绘控件。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
QEdit是Qt中的一个行文本编辑器控件,它提供了一个用于显示和编辑纯文本的窗口部件。与QTextEdit相比,它没有富文本编辑功能,但具有更高的性能和更低的内存消耗。 QPlainTextEdit具有以下特性: 1. 显示纯文本:QPlainTextEdit可以显示纯文本,支持大量的文本内容,并且能够处理大文本文件。 2. 高性能:相比于QTextEdit,QPlainTextEdit在处理大量文本时具有更高的性能和更低的内存消耗。 3. 编辑功能:用户可以通过键盘输入和鼠标操作进行文本编辑。QPlainTextEdit支持基本的文本编辑操作,例如插入、删除、复制、粘贴等。 4. 滚动条:当文本内容超过控件的可见区域时,QPlainTextEdit会自动显示垂直和水平滚动条,以便用户浏览整个文本内容。 5. 光标和选择:用户可以使用鼠标或键盘来移动光标和选择文本。QPlainTextEdit提供了API来操作光标位置和选中文本。 6. 信号和槽机制:QPlainTextEdit发出各种信号以响应用户的操作,例如文本变化、光标位置变化等。这使得开发者可以轻松地与QPlainTextEdit交互并响应用户的输入。 7. 自动换行:QPlainTextEdit支持自动换行,当文本超过控件宽度时,它会自动将文本换到下一行。 8. 文本格式化:尽管QPlainTextEdit不支持富文本编辑,但它仍然提供了一些文本格式化的功能,例如设置字体、颜色背景等。 通过使用QPlainTextEdit,您可以在Qt应用程序中轻松地创建和管理多行纯文本编辑器。它非常适合用于日志查看器、代码编辑器、文本编辑器等应用场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值