我们在使用Qt时,会发现在使用UI界面时可以添加窗口分隔条,但我们使用纯代码时却没有分隔条的类函数。这时候我们就需要手动添加,添加方式和Qt自定义标签按钮一样,下面我直接写代码。如果不知道怎么添加的,请先转到Qt自定义标签按钮。
splitLine.h文件:
1 #ifndef SPLITLINE_H 2 #define SPLITLINE_H 3 4 #include <QFrame> 5 6 class SplitLine : public QFrame 7 { 8 Q_OBJECT 9 public: 10 SplitLine(QWidget *parent = 0); 11 QFrame *frame; 12 public slots: 13 int setHorizontalVertical( int i=0 );//i=0时是水平分割线,i=1时是垂直分割线,默认为水平分割 14 void setSizeRect( int x=0, int y=0, int w=100, int h=30); 15 }; 16 17 #endif // SPLITLINE_H
splitLine.cpp文件:
1 #include "splitline.h" 2 3 SplitLine::SplitLine(QWidget *parent) : QFrame(parent) 4 { 5 frame = new QFrame(this); 6 setHorizontalVertical(0); //默认为水平分割 7 } 8 9 int SplitLine::setHorizontalVertical(int i) //i=0时是水平分割线,i=1时是垂直分割线,默认为水平分割,已设置有默认尺寸 10 { 11 if(i==0) 12 { 13 frame->setFrameShape(QFrame::HLine); // 水平分割线 14 frame->setFrameShadow(QFrame::Sunken); 15 setSizeRect(30,30,100,20); //设置默认尺寸 16 } 17 if(i==1) 18 { 19 frame->setFrameShape(QFrame::VLine); // 垂直分割线 20 frame->setFrameShadow(QFrame::Sunken); 21 setSizeRect(30,30,20,100); 22 } 23 else 24 { 25 frame->setFrameShape(QFrame::HLine); 26 frame->setFrameShadow(QFrame::Sunken); 27 setSizeRect(30,30,100,20); 28 } 29 return i; 30 } 31 32 void SplitLine::setSizeRect( int x, int y, int w, int h) 33 { 34 frame-> setGeometry(QRect(x,y,w,h)); 35 }
之后在Qt工程中调用即可。需要注意的是如果需要设置分割线的尺寸和布局方向,请先设置布局方向,否则分割线的尺寸是默认尺寸