前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >项目总结:Ubuntu+QtCreator

项目总结:Ubuntu+QtCreator

作者头像
何其不顾四月天
发布2023-03-10 13:43:54
4620
发布2023-03-10 13:43:54
举报
文章被收录于专栏:Qt&PyQt四月天的专栏

    说一下近期的项目Linux下Qt开发,主要功能:TreeView点击不同的节点对应不同的界面,界面分类有 终端,高亮Editor,TextBrower。

   说一下其中遇到的难点:

 TreeView: 采用QTreeWidget,利用设计师直接拖动。

   1)TrewWidget,头的样式无法设计,最后采用隐藏。

ui->treeWidget->headerItem()->setHidden(1);

    2)节点点击响应。在QTreeWidget Clsaa 和 QTreeWidgetItem Class没有找到相关信号和槽。解决方案; 

代码语言:javascript
复制
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,只要环境配置没有问题一路解压即可。

代码语言:javascript
复制
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为:

代码语言:javascript
复制
 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内部。。

代码如下:

代码语言:javascript
复制
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*: 用来实现高亮模块。

 安装方法如下:

代码语言:javascript
复制
sudo apt -f install libsource-highlight-qt4*  

卸载如下:

代码语言:javascript
复制
sudo apt remove libsource-highlight-qt4* -pruge

在使用过程中,一直有如下错误: 

代码语言:javascript
复制
TexEditHighlighted  does not  name a type  ui_mainwindow.h

解决方法: 定为到ui_mainwindow.h,将

代码语言:javascript
复制
TextEditHighLighted *   改为  srchiliteqt:: TextEditHighLighted *

文件读取与写入:

读取:

代码语言:javascript
复制
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();
}

写入:

代码语言:javascript
复制
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();
}

读取资源文件与读取本地文件的区别:

代码语言:javascript
复制
loadInformation(":resources/info/navigation.txt"); //读取资源文件
loadInformation("./resources/info/navigation.txt"; //读取本地文件
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-05-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档