在视图类中怎么进行分割,创建子视图?

http://social.microsoft.com/Forums/id-ID/visualcpluszhchs/thread/1757f561-32a5-4847-bd55-314ecd6978f0


try this:

BOOL m_bSplitter = FALSE; // 定义为成员变量,初始化为FALSE



int CXXXView::OnCreate(LPCREATESTRUCT lpCreateStruct) 

{

	if (CFormView::OnCreate(lpCreateStruct) == -1)

		return -1;

	

	// TODO: Add your specialized creation code here

	if(NULL == m_wndSplitter.GetSafeHwnd())

	{

		CCreateContext cc;

		memset(&cc, 0, sizeof(CCreateContext));

		

		CRect rc;

		GetWindowRect(&rc);

		

		VERIFY(m_wndSplitter.CreateStatic(this, 1, 2, WS_CHILD | WS_VISIBLE));



		cc.m_pNewViewClass = RUNTIME_CLASS(CLeftView);

		VERIFY(m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(300, rc.Height()), &cc));

		

		cc.m_pNewViewClass = RUNTIME_CLASS(CRightView);

		VERIFY(m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CRightView), CSize(0, rc.Height()), &cc));



		m_wndSplitter.MoveWindow(0, 0, rc.Width(), rc.Height());



		m_bSplitter = TRUE;

	}

	

	return 0;

}



void CXXXView::OnSize(UINT nType, int cx, int cy) 

{

	CFormView::OnSize(nType, cx, cy);

	

	// TODO: Add your message handler code here

	if(m_bSplitter && m_wndSplitter.GetSafeHwnd())

	{

		m_wndSplitter.MoveWindow(0, 0, cx, cy);

	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Qt中,我们可以使用QSplitter类来分割多个控件。例如,在实现多个摄像头监控时,我们可以将QCameraViewfinder控件添加到QSplitter中,并将其与另一个QCameraViewfinder控件分割。为了使分割操作更方便,我们可以使用QPushButton控件来触发分割。这可以通过以下步骤实现: 1. 创建QSplitter对象,并将两个QCameraViewfinder控件添加到其窗口。 2. 创建QPushButton控件,并将其添加到窗体中。 3. 使用QPushButton的clicked()信号来触发QSplitter的setOrientation()函数。 4. 在setOrientation()函数中,我们可以指定QSplitter的方向,以指定如何分割QCameraViewfinder控件。 例如,如果我们想水平分割QCameraViewfinder控件,则可以用Qt::Horizontal作为参数来调用setOrientation()函数。这将使QSplitter在水平方向上分割QCameraViewfinder控件,使其按照相等的宽度显示。 在实现多个摄像头监控时,还可以通过使用QCamera类来打开每个摄像头,并将其设置为每个QCameraViewfinder控件的源。这样,每个控件都将显示相应的摄像头图像。 总之,使用QSplitter和QPushButton控件可以方便地在Qt中实现多个摄像头监控,并提供了更好的用户体验。 ### 回答2: 在Qt中,我们可以使用QPushButton和QGridLayout来实现点击按钮将控件进行分割多个摄像头监控的功能。 首先,我们需要在Qt Designer中创建一个界面,包含一个QPushButton和一个QGridLayout。然后将一个QCameraViewfinder添加到QGridLayout中,这将显示一个摄像头监控视图。接下来,我们可以通过代码来实现点击按钮将视图分割成多个监控。 为了实现这一功能,我们需要使用QSplitter类,将QCameraViewfinder分割成多个部分。具体的实现步骤如下: 1. 创建一个QSplitter,并将QCameraViewfinder添加到其中。 2. 将QSplitter添加到QGridLayout中。 3. 在QPushButton的clicked信号中,创建一个新的QCameraViewfinder,并将其添加到QSplitter中,这样就会创建一个新的监控。 4. 最后,更新QGridLayout中的布局,以便QSplitter可以正确显示所有监控。 使用以上步骤即可实现点击按钮将控件进行分割多个摄像头监控的功能。当然,实际操作还要考虑到其他一些细节,比如如何控制分割区域的数量和大小等。 ### 回答3: Qt是一种流行的C++界面库和开发框架,广泛用于桌面程序和嵌入式系统。其提供了丰富的控件和组件,方便开发人员快速构建互动界面和处理各种事件。 在Qt中,通过点击按钮可以实现对控件的划分和显示。例如,可以将一个QWidget控件分割成多个窗口,用于显示多个摄像头监控。关键在于如何处理按钮点击事件和控件分割逻辑。 假设现有一个名为widget的QWidget控件,其中包含一个QPushButton按钮和一个QGridLayout网格布局,可以按照以下步骤实现控件分割: 1. 定义一个槽函数,用于处理按钮的点击事件。可以在widget类中添加如下函数: ```cpp private slots: void on_pushButton_clicked(); ``` 2. 在cpp文件中实现on_pushButton_clicked函数,编写控件分割逻辑。可以使用QSplitter控件设置分割条,并在每个窗口中显示一个QCamera控件。 ```cpp void Widget::on_pushButton_clicked() { QSplitter *splitter = new QSplitter(Qt::Vertical, this); QCameraViewfinder *viewfinder1 = new QCameraViewfinder(this); QCameraViewfinder *viewfinder2 = new QCameraViewfinder(this); QCamera *camera1 = new QCamera(this); QCamera *camera2 = new QCamera(this); camera1->setViewfinder(viewfinder1); camera2->setViewfinder(viewfinder2); splitter->addWidget(viewfinder1); splitter->addWidget(viewfinder2); splitter->setSizes(QList<int>() << height()/2 << height()/2); setCentralWidget(splitter); } ``` 3. 将按钮与槽函数绑定。在widget类的构造函数中添加如下代码: ```cpp connect(ui->pushButton, &QPushButton::clicked, this, &Widget::on_pushButton_clicked); ``` 以上代码实现了一个简单的多摄像头监控界面,点击按钮后可以将控件分割为上下两个窗口,并在每个窗口中显示各自的摄像头监控画面。开发人员可以根据需要进行更细致的调整和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值