开发需求:在对应的显示区域,任意分割QWidget,作为自定义控件的容器。
思路:限制信息显示区域才能作为分割窗口,区分不可窗口和可分割窗口;获取光标处的QWidget作为被分割窗口。调用窗口分割类QSplitter分割窗口。
头文件 #include <QSplitter>
Qt的属性系统可以设置QWidget的属性,setProperty()接口设置可分割窗口的属性,FLAG_ATT字符串作为窗口的分割属性,widget->setProperty("FLAG_ATT",1)//1不可分割,0为可分割。
void MeasureDisplay::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton && ui->widget_center->geometry().contains(this->mapFromGlobal(QCursor::pos())))
{
int mouse_x = QCursor::pos().x();//鼠标点击处横坐标
int mouse_y = QCursor::pos().y();//鼠标点击处纵坐标
cur_widget_ = QApplication::widgetAt(mouse_x, mouse_y);//获取鼠标点击处的控件
auto widget_flag = cur_widget_->property("FLAG_ATT").toInt();//窗口属性,1不可分割,0为可分割
if(widget_flag == 1)
{
cur_widget_ = nullptr;
return;
}