Qt编程之仿gnome-terminal终端样式 +颜色文字显示

Qt仿linux 终端样式 + 颜色文字

  • [1.说再多废话不如直接show code](#1.说再多废话不如直接show code)
  • 2.实现效果

本文采用QTextBrowser作为文本显示窗口,进行文本的显示。本文实例实现的效果并没有终端的输入效果,这里只是提供一些仿终端样式思路。

1.说再多废话不如直接show code

1.ui文件:采用一个QWidget为主窗口,QTextBrowser做文本显示

MainWindow .cpp代码实现:

cpp 复制代码
MainWindow *MainWindow::windowInstance = nullptr;

MainWindow::MainWindow(QWidget *parent)
	: QWidget(parent),
	ui(new Ui::MainWindow)
{
	ui->setupUi(this);
	//记录this指针,以便logHandle访问
	windowInstance = this;
	
	this->setWindowTitle("Terminal");
	//窗口主背景颜色
	this->setStyleSheet("background-color: #380C2A;");
	//注册日志函数handle
	qInstallMessageHandler(messageHandle);
	
	connect(this, &MainWindow::sigLog, this, &MainWindow::forceLog);
}

MainWindow::~MainWindow()
{
	delete ui;
}

//静态成员函数
void MainWindow::messageHandle(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
	QString color;
	switch (type)
	{
	case QtDebugMsg:
		color = "#FFFFFF";
		break;
	case QtInfoMsg:
		color = "#00FF00";
		break;
	case QtWarningMsg:
		color = "#FFFF00";
		break;
	case QtCriticalMsg:
		color = "#FF0000";
		break;
	case QtFatalMsg:
		color = "#FF0000";
	}
	QString text = QString("<font color=%1><tt>%2</tt></font>").arg(color).arg(msg);
	if (windowInstance)
	{
		emit windowInstance->sigLog(text);
	}
}

void MainWindow::forceLog(QString msg)
{
	ui->textBrowser->append(msg);
}

QTextBrowser样式表代码:

css 复制代码
QTextBrowser{
	background-color: transparent; 
	color: white; 
	font-size: 18px;
}
QScrollBar::vertical{
	background:transparent;
	width: 6px;
	margin: 0px;
 }
QScrollBar::handle:vertical{
	background-color:rgb(158,158,158);
	border: none;
	border-radius: 3px;
 }
QScrollBar::handle:vertical:pressed{
	background:#EC693C;
}
QScrollBar::sub-line:vertical{
	border:none;
}
QScrollBar::add-line:vertical{
	border:none;
}
QScrollBar::sub-page:vertical{
	border:none;
}
QScrollBar::add-page:vertical{
	border:none;
}

2.实现效果

左边是仿照效果,可以看到大致样式已仿照成功,当然这里顶部栏工具未做仿照。本文只是提供样式表的大致实现效果,有兴趣的小伙伴可以参考。

作者:费码程序猿

欢迎技术交流:QQ:255895056
转载请注明出处,如有不当欢迎指正

相关推荐
一匹电信狗4 小时前
【LeetCode_547_990】并查集的应用——省份数量 + 等式方程的可满足性
c++·算法·leetcode·职场和发展·stl
pride.li4 小时前
开发板和Linux--nfs服务挂载
linux·运维·服务器
初次见面我叫泰隆4 小时前
Qt——3、常用控件
开发语言·qt·客户端
looking_for__4 小时前
【Linux】应用层协议
linux·服务器·网络
BB_CC_DD4 小时前
Linux截图工具(ubuntu18.04+flameshot(火焰截图))
linux
Queenie_Charlie5 小时前
小陶的疑惑2
数据结构·c++·树状数组
无小道5 小时前
Qt——QWidget
开发语言·qt
云泽8085 小时前
不止是命令:Linux 高频指令实战 + 芯片架构底层逻辑
linux·运维·服务器
j_xxx404_5 小时前
Linux:基础IO
linux·运维·服务器
wdfk_prog6 小时前
[Linux]学习笔记系列 -- [drivers][i2c]i2c-dev
linux·笔记·学习