vsqt 多进程使用一个进度条

这个博客介绍了如何在C++中使用多进程共享一个进度条,并通过静态槽函数实现同步更新。`client_page`类包含了一个静态成员变量`total_size_`用于累计进度,以及一个静态槽函数`show_progress_bar`,用于接收不同进程传递的进度值并更新UI。博客还展示了如何利用`std::mutex`保证更新过程的线程安全。
摘要由CSDN通过智能技术生成

多进程使用一个进度条,两个进程使用一个进度条,进度条槽函数设置成static 静态 函数

client_page.h

class client_page : public QMainWindow
{
	Q_OBJECT

public:
	client_page(QWidget* parent = nullptr);
	~client_page();

public:
	Ui::client_pageClass ui;

public slots:

	static void show_progress_bar(int value_ );

	static void show_pro_bar(int dpro);


public:

	static uint32_t total_size_;

	client_page* self_() { return m_self; }

private:

	static int max_value_ ;

	static std::mutex mutex;
	static std::deque<int> write_deq;

	static client_page* m_self;
};

client_page.cpp

uint32_t client_page::total_size_;
int client_page::max_value_;
std::mutex client_page::mutex;
std::deque<int> client_page::write_deq;
client_page* client_page::m_self = nullptr;

client_page::client_page(QWidget* parent)
	: QMainWindow(parent)
	, io_pool_(10)
{
	ui.setupUi(this);
	m_self = this;

	ui.pro_bar->setOrientation(Qt::Horizontal);  
	ui.pro_bar->setMinimum(0); 
	ui.pro_bar->setMaximum(100);

		connect(ui.add_upload,SIGNAL(clicked(bool)),this,SLOT(show_progress_bar(int)));

	
}

void client_page::show_progress_bar_max(int maxvalue_)
{
	max_value_ = maxvalue_;
}

void client_page::show_progress_bar(int value_)
{
	
	total_size_ += value_;

	double dpro = (total_size_ * 100.00) / max_value_;

	show_pro_bar(dpro);

}

void client_page::show_pro_bar(int dpro)
{
	m_self->ui.pro_bar->setValue(dpro);
	m_self->ui.pro_bar->update();
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值