最近公司做项目用到一个推拉的组件,发现Qt并没有这个组件,于是就用Qt的QWidget封装了一个,实现的效果如下图:
图拉开时的效果,拉出来的上面是一个QWidget组件可以放其他的组件如按钮、标签、表格等...
这是合上的效果图,左边有个小按钮,点击一下又可以出来。而且不影响其他组件以及布局。
核心代码如下:
添加一个widget
w = new QWidget(this) ;
btn = new QPushButton("Btn",w) ;
connect(btn,SIGNAL(clicked()),this,SLOT(clicked()));
btn->setStyleSheet("background-color:rgb(255,255,255)");
实现推拉功能代码:
void Widget::clicked()
{
if(isOpen == false)
{
isOpen = true ;
w->setGeometry(0,0,this->width()/3,this->height());
w->setStyleSheet("background-color:rgb(255,34,198)");
btn->setGeometry(w->width() - 20,w->height()/2 -50,20,100);
btn->setText("<-");
}
else
{
isOpen =false ;
w->setGeometry(0,10,20,this->height());
w->setStyleSheet("background: transparent;");
btn->setGeometry(w->width() - 20,w->height()/2 -50,20,100);
btn->setText("->");
}
}
合上的时候widget还是存在,只是重新设置了widget的大小,留了大概有10个像素,并设置背景透明。
工程源码,欢迎下载:http://download.csdn.net/detail/douyuan888/9735733