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
转载请注明出处,如有不当欢迎指正

相关推荐
青梅橘子皮17 小时前
Linux---基本指令
linux·运维·服务器
REDcker17 小时前
Linux信号机制详解 POSIX语义与内核要点 sigaction与备用栈实践
linux·运维·php
汉克老师18 小时前
GESP2025年3月认证C++五级( 第三部分编程题(1、平均分配))
c++·算法·贪心算法·排序·gesp5级·gesp五级
cui_ruicheng18 小时前
Linux进程间通信(三):System V IPC与共享内存
linux·运维·服务器
蚰蜒螟18 小时前
深入 Linux 内核同步机制:从 futex 到 spinlock 的完整旅程
linux·windows·microsoft
运维全栈笔记18 小时前
Linux安装配置Tomcat保姆级教程:从部署到性能调优
linux·服务器·中间件·tomcat·apache·web
小短腿的代码世界18 小时前
Qt日志系统深度解析:从qDebug到企业级日志框架
开发语言·qt
dllmayday19 小时前
Linux 上用终端连接 WiFi
linux·服务器·windows
峥无21 小时前
Linux系统编程基石:静态库·动态库·ELF文件·进程地址空间全景图
linux·运维·服务器
智者知已应修善业21 小时前
【51单片机2个按键控制流水灯运行与暂停】2023-9-6
c++·经验分享·笔记·算法·51单片机