项目总结:Ubuntu+QtCreator

举报
何其不顾四月天 发表于 2020/12/28 23:11:39 2020/12/28
【摘要】     说一下近期的项目Linux下Qt开发,主要功能:TreeView点击不同的节点对应不同的界面,界面分类有 终端,高亮Editor,TextBrower。    说一下其中遇到的难点:    TreeView: 采用QTreeWidget,利用设计师直接拖动。    1)...

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

   说一下其中遇到的难点:

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

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

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

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


  
  1. void treeview::TreeViewInit()
  2. {
  3. connect(ui->treeWidget,SIGNAL(itemClicked(QTreeWidgetItem *, int )),this,SLOT(Idexchild(QTreeWidgetItem * , int )));
  4. }
  5. void treeview::Idexchild(QTreeWidgetItem * item, int column)
  6. {
  7. QTreeWidgetItem *parent=item->parent(); //得到当前子节点的父节点
  8. if(parent == NULL) return;
  9. int col = parent->indexOfChild(item); //得到当前子节点、
  10. QString text = parent->text(0); //返回父节点的文本内容
  11. if(text == "Child1") ClickedChild_1(col); //如果是Chiled1,执行ClickedChile_1()函数
  12. if(text == "Child2") ClickedChild_2(col);
  13. if(text == "Child3") ClickedChild_3(col);
  14. if(text == "Widget_1") ClickedChildChild_1(col);
  15. }

  其中注意:父节点返回,如果当前节点不存在父节点的话,返回。否则会报错卡死。

QTermwidget:为Linux下的Qt开源库。在自己UI界面下,实现模拟终端功能。

下载地址:https://github.com/lxqt/qtermwidget/releases

编译:我将压缩包放到Qt的相对路径下,我的Qt版本为Qt4.7.8,只要环境配置没有问题一路解压即可。


  
  1. tar xvzf qtermwidget-0.6.0.tar.gz
  2. cd qtermwidget-0.6.0
  3. cmake .
  4. make
  5. make install

如果你的Qt版本为 : Qt5.0一上,Qtermwidget默认配置为Qt4的Qmake路径,需要修改CMakeList.txt为:


  
  1. include_directories(
  2. "${CMAKE_SOURCE_DIR}/lib"
  3. "${CMAKE_BINARY_DIR}/lib"
  4. "${CMAKE_BINARY_DIR}"
  5. )
  6. add_definitions(-Wall)在其下面添加:
  7. set(CMAKE_PREFIX_PATH "/home/leon/Qt5.7.0/5.7/gcc_64/"),注意修改路径。

编译成功之后,会生成两个关于Qt库文件,libqtermwidgetqt4.so /libqtermwidigetqt4plgin.so

需在工程库添加,调用。我是根据Demo写的,将Qtermwidget放置于一个自定义widget内部。。

代码如下:


  
  1. void treeview::qterminal()
  2. {
  3. QIcon::setThemeName("oxygen");
  4. QTermWidget *console = new QTermWidget(ui->widget_3);
  5. QFont font = QApplication::font();
  6. #ifdef Q_WS_MAC
  7. font.setFamily("Monaco");
  8. #elif defined(Q_WS_QWS)
  9. font.setFamily("fixed");
  10. #else
  11. font.setFamily("Monospace");
  12. #endif
  13. font.setPointSize(12);
  14. console->setTerminalFont(font);
  15. console->setGeometry(0,0,ui->widget_3->width(),ui->widget_3->height());
  16. console->setScrollBarPosition(QTermWidget::ScrollBarRight);
  17. foreach (QString arg, QApplication::arguments())
  18. {
  19. if (console->availableColorSchemes().contains(arg))
  20. console->setColorScheme(arg);
  21. if (console->availableKeyBindings().contains(arg))
  22. console->setKeyBindings(arg);
  23. }
  24. 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 *
 
文件读取与写入:

读取:


  
  1. void MainWindow::loadInformation(QString filename){
  2. QFile file(filename);
  3. QString line;
  4. ui->information->clear();
  5. if(file.open(QIODevice::ReadOnly | QIODevice::Text)){
  6. QTextStream stream(&file);
  7. while(!stream.atEnd()){
  8. line = stream.readLine();
  9. ui->information->setText(ui->information->toHtml()+line+"\n");
  10. }
  11. }
  12. file.close();
  13. }

写入:


  
  1. void MainWindow::WriteText(QString filename,QString str)
  2. {
  3. QFile file(filename);
  4. if(!file.open(QIODevice::WriteOnly))
  5. file.close();
  6. file.open(QIODevice::WriteOnly);
  7. file.write(str.toAscii());
  8. file.close();
  9. }

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


  
  1. loadInformation(":resources/info/navigation.txt"); //读取资源文件
  2. loadInformation("./resources/info/navigation.txt"; //读取本地文件


文章来源: blog.csdn.net,作者:何其不顾四月天,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/u011218356/article/details/80156600

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。