接上次
///
QPalette:调色板 用来管理控件或者窗体的所有颜色信息
在设置文本区文本的颜色时使用 和 设置文本区背景颜色时使用
不能使用QTextEdit::setTextColor(QColor ) 来设置文本的颜色 这样当文本清空后 新增的文本颜色又恢复为原来的颜色
需要使用QTextEdit::setPalette(QPalette ) 给文本区设置调色板
QColorDialog color_dlg; //颜色对话框
QColor color; //字体预设置的颜色
QPalette palette = edit->palette(); //首先获得 文本区的调色板对象
color = color_dlg.getColor(Qt::black); //默认为黑色
if (color.isValid()) //颜色有效
{
palette.setColor(QPalette::Text, color); //给调色板设置颜色
edit->setPalette(palette); //重新设置调色板
}
QPalette::setColor(QPalette::ColorRole ,QColor ) //设置调色板的属性 和调色板的颜色
上面设置的就是文本区的前景色(QPalette::Text) 也就是文本的颜色 预设置的颜色为从颜色对话框返回的颜色
类似的还有QPalette::Base 就是文本区的背景色 也就是文本区的背景颜色
QPalette::Window 窗口部件的背景色
QPalette::Button 按钮部件的背景色
QPalette::ButtonText 按钮部件的前景色
还有一些 去看文档吧
QStatusBar:状态栏
QStatusBar::show() //显示状态栏
QStatusBar::hide() //隐藏状态栏
在模仿windows查看菜单中的 状态栏项 时使用
//
在状态栏的右下角显示当前光标所在行 和 列
列好获取
textcursor = edit->textCursor(); //获取文本区的光标
int col = textcursor.columnNumber(); //这样就获取到了光标所在的列
行就不好了获取了
textcursor.blockNumber(); //这样获取不对 这样获取的是段落号码
textcursor = edit->textCursor();
QTextLayout *textlayout = textcursor.block().layout();
int temp_raw = textcursor.position() - textcursor.block().position();
int raw = textlayout->lineForTextPosition(temp_raw).lineNumber() + textcursor.block().firstLineNumber();
raw++; 这句不要忘了 不然行号是从0开始的
QLabel *raw_col;
raw_col->setText(tr("第%1行,第%2列").arg(raw).arg(col)); //这样就给标签设置了 光标的行 和 列 //QString::arg()//用字符串变量参数依次替代字符串中最小数值
///
QMessageBox:消息提示框
QMessageBox::setText(QString ) //设置消息提示框 显示的内容
还有许多的成员函数 可以定制出随心所欲的提示框
不要使用QMessageBox::show() //这样写 提示框会一闪而过
应该使用QMessageBox::exec() //这样写 是对的 阻塞别的窗口
效果:
不对的地方 请批评指正
|
|
|