• 5003阅读
  • 3回复

[原创]QPlainTextEdit 设置背景的问题 [复制链接]

上一主题 下一主题
离线skbysp
 

只看楼主 倒序阅读 楼主  发表于: 2014-02-11
         我在用qt写一个简单的代码编辑器的时候,利用QPlainTextEdit, 但是设置背景时不能设置成我想要的背景色,当有新行时上面的也不能更新,想让大家提些思路。       结构大概是这样:mainwindow 有codeeditor(QPlainTextEdit), linenumberarea(Qwidget) 这两个主要成员,linenumber自行绘制,codeeditor的背景用setpalette,如果我想用paintEvent自己绘制codeeditor,目前还没想到解决方案,希望大家给点意见。
       附件有代码
描述:源码
附件: codesample.zip (8 K) 下载次数:1
离线XChinux

只看该作者 1楼 发表于: 2014-02-11
用QSS就可以了吧?
codeeditor->setStyleSheet("background-color:lightYellow;");
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线noidea

只看该作者 2楼 发表于: 2014-02-11
我理解你的需求是,
假如用户在文档中选择一行,你希望高亮此行,并且允许用户在此高亮行上编辑。
你的问题是,你高亮该行失败。

我不太理解,“当有新行时上面的也不能更新”, “上面”是谁?更新什么?是你更新文字失败还是更新背景失败?

单单就更新背而言
Palette 方法
  1. QPlainTextEdit edit;
  2. QPalette p = edit.palette();
  3. p.setColor(QPalette::Active, QPalette::Base, Qt::red);
  4. p.setColor(QPalette::Inactive, QPalette::Base, Qt::red);
  5. edit.setPalette(p);


qss方法见楼上范例

最后注意setBackgroundVisible方法,如果还是没有改变背景,添加此方法测试
  1. setBackgroundVisible(true);
talk in code
Qt5.2.1 + MacOSX10.9
离线skbysp

只看该作者 3楼 发表于: 2014-02-13
问题已经解决了,mainwindow的窗口绘制和plaintextedit的绘制是独立的,我只设置了mainwindow的背景(palette),或者只设置了plaintextedit的背景,谢谢大家,毕竟不怎么熟悉qt,以后多来学习
快速回复
限100 字节
 
上一个 下一个