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

相关推荐
倒头就睡的小比特20 小时前
算法竞赛C++常用的STL
c++·算法
weilx123420 小时前
C++笔记-文件IO-<fcntl.h>
c++
未济21 小时前
linux 配置环境变量
linux
傲世仙尊21 小时前
目录即文件-Ext文件系统收尾篇
linux·c语言
Smileyqp沛沛1 天前
前端?C++ ?较大差异基础罗列
c++·基础·前端转c++
C语言小火车1 天前
C/C++ 为什么需要编译器?
开发语言·c++
_艾伦 耶格尔.1 天前
进程间通信
linux
旖旎夜光1 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
Liuqy-051 天前
Linux IO编程——静态库、动态库
linux
吞下星星的少年·-·1 天前
C++ 萌新语法入门篇
c++·算法比赛