当前位置: 首页 > news >正文

QT传输函数控件设计4 接着进行融合

既上节之后,我们要定义一个打开文件的菜单,用于打开我们想用来可视化的文件:

在头文件类中声明:

pravite:
	QAction *action;
	QToolBar *mainToolBar;
	QStatusBar *statusBar;
	QMenuBar *menuBar;
	QMenu *menu;

    void setup();

然后写实体:(注意这里面有些东西是从以前自己生成的.ui文件里拷贝的,所以有些内容其实可以去掉,比如setObjectName函数。这里懒得去掉了。

        action = new QAction(this);
	action->setObjectName(QStringLiteral("action"));

	mainToolBar = new QToolBar(this);
	mainToolBar->setObjectName(QStringLiteral("mainToolBar"));
	addToolBar(Qt::TopToolBarArea, mainToolBar);
	menuBar = new QMenuBar(this);
	menuBar->setObjectName(QStringLiteral("menuBar"));
	menuBar->setGeometry(QRect(0, 0, 1017, 23));
	menu = new QMenu(menuBar);
	menu->setObjectName(QStringLiteral("menu"));
	setMenuBar(menuBar);

	menuBar->addAction(menu->menuAction());

定义菜单栏,没有什么可解释的。

	setWindowTitle(QApplication::translate("MyMainWindow", "Feimos", Q_NULLPTR));
	action->setText(QApplication::translate("MyMainWindow", "Choose Dir", Q_NULLPTR));
	menu->setTitle(QApplication::translate("MyMainWindow", "File", Q_NULLPTR));

设置标题。

	action->setShortcuts(QKeySequence::Open);//设置快捷键
	action->setStatusTip(tr("打开文件夹"));//添加状态栏的提示语句。状态栏就是主窗口最下面的一条。现在我们的程序还没有添加状态栏,因此你是看不到有什么作用的。
	connect(action, &QAction::triggered, this, &MyMainWindow::open);
	menu->addAction(action);

然后连接动作,动作函数的名字叫 open()。

然后我们在MyMainWindow类(我们的主窗体类)里声明:

private:
	QString DcmPathName;
private:
	void open();

在VS上不一定需要声明到槽函数,这里也不做过多解释,反正输出程序提示如果找不到槽,就声明为:

private slots:
	void open();

包含下面几个头文件:

#include <QMessageBox>
#include <QString>
#include <QFileDialog>
#include <QFileInfo>
#include <QStringList>

之后我们开始定义open()函数:

void MyMainWindow::open(){
	do {
		int questionResult = 0;
		DcmPathName = QFileDialog::getExistingDirectory(this, tr("dcm file path"), QDir::currentPath()) + "\\";
		if (DcmPathName == QString("\\"))//如果直接关闭了对话框
		{
			break;
		}
		QDir dir(DcmPathName);
		dir.setFilter(QDir::Files);
		QStringList filters;//加过滤器
		filters << "*.dcm";//只找后缀为.dcm的文件
		dir.setNameFilters(filters);
		QFileInfoList list = dir.entryInfoList();
		QFileInfo fileInfo;
		QStringList filelist;
		foreach(fileInfo, list)
		{
			filelist << fileInfo.fileName();
		}
        //上面主要是在统计路径下,我们目标.dcm文件数量
		int dcmCount = filelist.count();
        //调试用的,可以注释掉
		//DebugText::getDebugText()->addContents( QString::number(dcmCount));
		if (dcmCount>20) {
			break;
		}
		else { 
            //数量太少,或者出现中文路径文件读不到,或者目录里没有.dcm文件,都不行
			questionResult = QMessageBox::question(this, tr("dcm file path"),
				"Do not use path in Chinese ! \n Or no dcm file exists !\
				\n Do you want to find another path ?",
				QMessageBox::Yes, QMessageBox::No);

			if (questionResult == QMessageBox::No) {
				break;
			}
		}
	} while (1);


}

Open()函数的意义在于找到一个里面有一堆用来显示的dcm数据的文件夹

现在我们的菜单功能已经设计好了,下一节争取我们就能显示出整个图像。

相关文章:

  • QT传输函数控件设计5 显示体渲染效果
  • QT传输函数控件设计6 设计Dock窗体结构
  • QT传输函数控件设计7 边界和布局规划
  • QT传输函数控件设计8 设计小圆点
  • QT传输函数控件设计9 初步设计视口类
  • QT传输函数控件设计10 包含小圆点的图形项
  • QT传输函数控件设计11 包含小圆点的图形项2
  • QT传输函数控件设计12 自定义信号和槽
  • QT传输函数控件设计13 大结局
  • QT三维图形1
  • QT三维图形2
  • QT三维图形3
  • QT三维图形4
  • icache的方面以及使用
  • cmp bne 以及sub指令的详解
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 2017-08-04 前端日报
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Java编程基础24——递归练习
  • Mysql优化
  • PAT A1092
  • php面试题 汇集2
  • React 快速上手 - 07 前端路由 react-router
  • Shell编程
  • vue--为什么data属性必须是一个函数
  • 高度不固定时垂直居中
  • 基于遗传算法的优化问题求解
  • ------- 计算机网络基础
  • 收藏好这篇,别再只说“数据劫持”了
  • 译米田引理
  • 云大使推广中的常见热门问题
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​虚拟化系列介绍(十)
  • ​用户画像从0到100的构建思路
  • (¥1011)-(一千零一拾一元整)输出
  • (13):Silverlight 2 数据与通信之WebRequest
  • (C++17) optional的使用
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .Net MVC4 上传大文件,并保存表单
  • .NET 中让 Task 支持带超时的异步等待
  • .NET关于 跳过SSL中遇到的问题
  • [AIGC] Spring Interceptor 拦截器详解
  • [Android]RecyclerView添加HeaderView出现宽度问题
  • [Android]使用Git将项目提交到GitHub
  • [autojs]autojs开关按钮的简单使用
  • [ccc3.0][数字钥匙] UWB配置和使用(二)
  • [cocos2d-x]关于CC_CALLBACK
  • [dart学习]第四篇:函数
  • [DevEpxress]GridControl 显示Gif动画
  • [dts]Device Tree机制