项目总结:Ubuntu+QtCreator
说一下近期的项目Linux下Qt开发,主要功能:TreeView点击不同的节点对应不同的界面,界面分类有 终端,高亮Editor,TextBrower。
说一下其中遇到的难点:
TreeView: 采用QTreeWidget,利用设计师直接拖动。
1)TrewWidget,头的样式无法设计,最后采用隐藏。
ui->treeWidget->headerItem()->setHidden(1);
2)节点点击响应。在QTreeWidget Clsaa 和 QTreeWidgetItem Class没有找到相关信号和槽。解决方案;
-
void treeview::TreeViewInit()
-
{
-
connect(ui->treeWidget,SIGNAL(itemClicked(QTreeWidgetItem *, int )),this,SLOT(Idexchild(QTreeWidgetItem * , int )));
-
}
-
-
void treeview::Idexchild(QTreeWidgetItem * item, int column)
-
{
-
QTreeWidgetItem *parent=item->parent(); //得到当前子节点的父节点
-
if(parent == NULL) return;
-
int col = parent->indexOfChild(item); //得到当前子节点、
-
-
QString text = parent->text(0); //返回父节点的文本内容
-
if(text == "Child1") ClickedChild_1(col); //如果是Chiled1,执行ClickedChile_1()函数
-
if(text == "Child2") ClickedChild_2(col);
-
if(text == "Child3") ClickedChild_3(col);
-
if(text == "Widget_1") ClickedChildChild_1(col);
-
}
其中注意:父节点返回,如果当前节点不存在父节点的话,返回。否则会报错卡死。
QTermwidget:为Linux下的Qt开源库。在自己UI界面下,实现模拟终端功能。
下载地址:https://github.com/lxqt/qtermwidget/releases
编译:我将压缩包放到Qt的相对路径下,我的Qt版本为Qt4.7.8,只要环境配置没有问题一路解压即可。
-
tar xvzf qtermwidget-0.6.0.tar.gz
-
cd qtermwidget-0.6.0
-
cmake .
-
make
-
make install
如果你的Qt版本为 : Qt5.0一上,Qtermwidget默认配置为Qt4的Qmake路径,需要修改CMakeList.txt为:
-
include_directories(
-
"${CMAKE_SOURCE_DIR}/lib"
-
"${CMAKE_BINARY_DIR}/lib"
-
"${CMAKE_BINARY_DIR}"
-
)
-
add_definitions(-Wall)在其下面添加:
-
set(CMAKE_PREFIX_PATH "/home/leon/Qt5.7.0/5.7/gcc_64/"),注意修改路径。
编译成功之后,会生成两个关于Qt库文件,libqtermwidgetqt4.so /libqtermwidigetqt4plgin.so
需在工程库添加,调用。我是根据Demo写的,将Qtermwidget放置于一个自定义widget内部。。
代码如下:
-
void treeview::qterminal()
-
{
-
QIcon::setThemeName("oxygen");
-
QTermWidget *console = new QTermWidget(ui->widget_3);
-
QFont font = QApplication::font();
-
#ifdef Q_WS_MAC
-
font.setFamily("Monaco");
-
#elif defined(Q_WS_QWS)
-
font.setFamily("fixed");
-
#else
-
font.setFamily("Monospace");
-
#endif
-
font.setPointSize(12);
-
console->setTerminalFont(font);
-
console->setGeometry(0,0,ui->widget_3->width(),ui->widget_3->height());
-
console->setScrollBarPosition(QTermWidget::ScrollBarRight);
-
foreach (QString arg, QApplication::arguments())
-
{
-
if (console->availableColorSchemes().contains(arg))
-
console->setColorScheme(arg);
-
if (console->availableKeyBindings().contains(arg))
-
console->setKeyBindings(arg);
-
}
-
QObject::connect(console, SIGNAL(finished()), this, SLOT(close()));
qlibsource-highlight-qt4*: 用来实现高亮模块。
安装方法如下:
sudo apt -f install libsource-highlight-qt4*
卸载如下:
sudo apt remove libsource-highlight-qt4* -pruge
在使用过程中,一直有如下错误:
TexEditHighlighted does not name a type ui_mainwindow.h
解决方法: 定为到ui_mainwindow.h,将
TextEditHighLighted * 改为 srchiliteqt:: TextEditHighLighted *
文件读取与写入:
读取:
-
void MainWindow::loadInformation(QString filename){
-
QFile file(filename);
-
QString line;
-
ui->information->clear();
-
if(file.open(QIODevice::ReadOnly | QIODevice::Text)){
-
QTextStream stream(&file);
-
while(!stream.atEnd()){
-
line = stream.readLine();
-
ui->information->setText(ui->information->toHtml()+line+"\n");
-
}
-
}
-
file.close();
-
}
写入:
-
void MainWindow::WriteText(QString filename,QString str)
-
{
-
QFile file(filename);
-
if(!file.open(QIODevice::WriteOnly))
-
file.close();
-
file.open(QIODevice::WriteOnly);
-
file.write(str.toAscii());
-
file.close();
-
}
读取资源文件与读取本地文件的区别:
-
loadInformation(":resources/info/navigation.txt"); //读取资源文件
-
loadInformation("./resources/info/navigation.txt"; //读取本地文件
文章来源: blog.csdn.net,作者:何其不顾四月天,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/u011218356/article/details/80156600
- 点赞
- 收藏
- 关注作者
评论(0)