Qt:主窗体(QMainwindow)初始化注意事项

使用"setAttribute(Qt::WA_DeleteOnClose);"释放资源。

该语句在控件(QWidget)收到关闭事件(close event)时删除该控件,释放资源。该语句一般在控件构造时

调用。

cpp 复制代码
Main_window::Main_window(QWidget *parent)
		: QMainWindow(parent)
		, ui(new Ui::Main_window)
	{
		ui->setupUi(this);
		
		set_scene();
		set_connection();
		
		setAttribute(Qt::WA_DeleteOnClose);
	}

注意事项:

如果主窗体在main函数中使用智能指针创建,智能指针会根据环境自动释放指针资源,则不应再使用该语句释放资源,否则会导致主窗体指针被释放两次。

添加菜单

在头文件添加菜单和按钮

cpp 复制代码
QMenu* file_menu_;
			
QAction* open_action_;

QAction* exit_action_;

在源文件进行实例化。

cpp 复制代码
        file_menu_ = menuBar()->addMenu(tr("&File"));
		
		open_action_ = new QAction(this);
		open_action_->setText(tr("Open"));
		open_action_->setShortcut(QKeySequence::Open);
		file_menu_->addAction(open_action_);
		
		exit_action_ = new QAction(this);
		exit_action_->setText(tr("E&xit"));
		exit_action_->setShortcut(QKeySequence::Quit);
		file_menu_->addAction(exit_action_);
相关推荐
爱思考的小伙几秒前
Qt-03:串口助手
qt
BestOrNothing_20152 分钟前
ROS2 话题通信实战:消息对象、Publisher 发布器与 Subscriber 订阅器保姆级教程
c++·ros2·subscriber·publisher·话题通信
艾iYYY1 小时前
string 类的模拟实现
android·服务器·c语言·c++·算法
为何创造硅基生物1 小时前
C++ virtual void StartNetwork() = 0; // 纯虚:子类必须实现,否则不能 new。
c++
知无不研2 小时前
对套接字的深入理解
linux·服务器·网络·c++·socket·网络套接字
hai3152475433 小时前
FlashAttention C语言(C++)实现(展示版)
c语言·开发语言·c++·人工智能·算法
864记忆4 小时前
远程执行指令-常用指令集
qt
wuminyu4 小时前
Java锁机制之Java对象重量级锁源码剖析
java·linux·c语言·jvm·c++
郝学胜_神的一滴5 小时前
Qt 高级开发 026:QTabWidget御道,从筑基到化境
c++·qt
apocelipes5 小时前
GNU GCC 多版本函数扩展
c语言·c++·linux编程