Qt6+vtk9入门

目录

1 Qt下载

2 Qt Creator手册

1 edit toolbar

2 双击某控件更改控件名称。

3 Qt signal & slot

Qt 6+vtk9.1+vs2019配置


1 Qt下载

现在下载Qt需要先注册Qt账号。地址https://www.qt.io。版本Qt creator 7.0,Qt 6.2.3. 网站推荐使用online installer。安装后可用qt根目录的maintenancetool.exe修改安装配置。

2 Qt Creator手册

1 edit toolbar

<>在编辑位置间跳转

打开文件下拉菜单,选择已打开文件

符号下拉菜单,快速定位符号

行号、列号:定位至某行:某列

2 双击某控件更改控件名称。

3 Qt signal & slot

signal是事件,例如按钮点击;slot是处理函数。

在控件上右键点击,出现环境菜单。例如,按钮的clicked(),然后点击OK。

此时,在.h文件添加了on_findButton_clicked()函数声明,在.cpp文件添加了TextFinder::on_findButton_clicked()默认函数体。

int main(int argc, char *argv[])
{
    QApplication EditorApp(argc, argv);
    Notepad Editor;
    Editor.show();

    return EditorApp.exec();
}

QApplication声明了一个程序;notepad声明了界面,show显示界面,exec()进入程序循环。

对控件进行设计的文件位于*.ui中,为xml格式。控件都位于ui对象中,通过ui->来进行引用。

Qt文件结构:假如窗口文件名为mainWindow.ui,ui进行处理后产生ui_mainWindow.h,是窗口控件的初始化包含文件。mainWindow.cpp是界面处理类,gui循环都在这里。main.cpp是整个程序的循环,show()和exec()等。

输入文件要打包到资源文件中?

问题描述:

Windows 8环境下,在QtCreator里运行Qt5程序,没有出现问题,但是在工程文件夹下的debug目录下,双击运行生成的.exe文件,却提示丢失Qt5Core.dll。

问题解决:

将Qt5Core.dll所在的目录添加到Windows系统环境变量Path里。

我的Qt5Core.dll所在的目录是:D:\Qt\Qt5.5.1\5.5\mingw492_32\bin

右键我的电脑,选择属性,然后选择高级系统设置 --> 环境变量,编辑Path系统变量,将上述路径添加到后面,注意要用分号分隔每一个不同路径,点击确定后重新运行.exe成功。

今天在用QT写程序的时候,为了测试程序,想要在程序执行的中间过程在用C++中的cout进行输出,但是使用cout<<输出的时候,在“应用程序输出”一栏中并没有任何显示。经过查阅资料发现,原因是.pro的工程文件的内容导致的,在工程文件中加入

CONFIG += console

然后重新构建程序即可。

控件基础

QLineEdit是单行文本输入,一般用于用户名、密码等少量文本交互地方。
QTextEdit用于多行文本,也可以显示HTML格式文本。
QPlainTextEdit与QTextEdit很像,但它多用于需要与文本进行处理的地方,而QTextEdit多用于显示,可以说,QPlainTextEdit对于plain text处理能力比QTextEdit强。

QT creator修改编译设置

 

 QTabWidget只有添加一个任意其他控件后才能显示?

Qt 6+vtk9.1+vs2019配置

参考如下两个文章:VTK9.1.0在Windows10+VS2019+Qt 5.15.2环境下编译安装以及VTK应用于QT_isongxw的博客-CSDN博客_win10安装vtkhttps://blog.csdn.net/qq_34499305/article/details/120774663

vtk9.0.3+vs2019+cmake+Qt编译库 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/390669033 上面都是Qt 5的,下载Qt6的库需要使用前述maintenancetool.exe下载对应的qt库。

Qt6使用cmake构建。

cmake的基本语法:

cmake不区分大小写。

set为设置变量,set(PROJ vtkqt6),将变量PROJ设置为vtkqt6。引用变量用${PROJ}。

qt6+vtk9示例程序,使用了qvtkopenglnativewidget。

#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include "vtkSmartPointer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderer.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkInteractorStyleTrackballCamera.h"
#include "vtkCylinderSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkLight.h"
#include "vtkCamera.h"
#include "vtkCGNSReader.h"

#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkInteractionStyle)
VTK_MODULE_INIT(vtkRenderingOpenGL2)

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    vtkSmartPointer<vtkCylinderSource> cylinder =
    vtkSmartPointer<vtkCylinderSource>::New();
    cylinder->SetHeight( 3.0 );
    cylinder->SetRadius( 1.0 );
    cylinder->SetResolution( 50 );
    vtkSmartPointer<vtkPolyDataMapper> cylinderMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
    cylinderMapper->SetInputConnection( cylinder->GetOutputPort() );
    vtkSmartPointer<vtkActor> cylinderActor = vtkSmartPointer<vtkActor>::New();
    cylinderActor->SetMapper( cylinderMapper );
    vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
    renderer->AddActor( cylinderActor );
    renderer->SetBackground( 0.1, 0.2, 0.4 );

    vtkSmartPointer<vtkLight> myLight= vtkSmartPointer<vtkLight>::New();
    myLight->SetColor(0,1,0);
    myLight->SetPosition(0,0,1);
    myLight->SetFocalPoint(renderer->GetActiveCamera()->GetFocalPoint());
    renderer->AddLight(myLight);

    ui->openGLWidget->renderWindow()->AddRenderer(renderer);

    vtkSmartPointer<vtkRenderWindowInteractor> iren = ui->openGLWidget->renderWindow()->GetInteractor();

    iren->SetRenderWindow(ui->openGLWidget->renderWindow());
}

MainWindow::~MainWindow()
{
    delete ui;
}

 参考:https://blog.csdn.net/qq_37441588/article/details/118677431

上文中有两个问题:

1,ui.qvtkWidget->GetRenderWindow()->AddRenderer(ren);
这个GetRenderWindow过时了,使用qvtkWidget->renderWindow()代替,

2,QVTKInteractor cannot control the event loop错误
第一种方法,消除vtk的警告:vtkOutputWindow::SetGlobalWarningDisplay(0);
第二种方法,原来QVTKOpenGLWidget会在创建时完成Interactor创建和开启,保证其对窗口的控制,因此
ui.openGLWidget->GetInteractor()->Initialize();
ui.openGLWidget->GetInteractor()->Start();
这两句话是不必要的。
删除这两句话后,程序不再产生vtk错误窗口。

参考链接:https://www.jianshu.com/p/8254be426275

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值