1、在qtdesigner中选择需要设置边框的对象
2、在属性编辑框(一般在右下角)找到stylesheet,并打开编辑样式表界面
3、在添加颜色中选择任意一种颜色,我们主要是获取rgb的值
4、然后改成下面格式
#frame{border:1px solid rgb(0,255,0)} //frame代表你需要设置边框的frame对象名,1px是边框的线宽,solid为边框形式为实线,rgb为边框颜色
5、点击确定即可
QtDesigner控件背景颜⾊及边框设置需求:在Qt Designer中,从⼯具栏拖⼀个Frame(框架)到MainWindow(主窗⼝),为了美观,想把Frame的边框调宽,颜⾊设置为红⾊。问题:本⼈是VS C#⽤户,习惯了再控件属性中设置边框颜⾊和宽度,但在Qt设计中,属性并不提供相应功能,因此⽆法轻易实现。
解决:通过参考他⼈设计,发现在Frame控件的属性styleSheet中,可以进⾏样式编辑来实现所需功能。
详述:以上为问题与解决思路,详细的实现涉及到CSS级联样式表,下⾯将通过⼏个例⼦来介绍⼀下怎样使⽤Qt中的部件类型设计。
1 设置⼀个按钮的背景⾊和边框:background-color =yellowboder=2px
选中⽬标控件,点击stylesheet属性,在d出的编辑样式表中输⼊CSS代码。
2 设置Frame边框颜⾊和线宽
选中Frame控件,在stylesheet属性的编辑样式表输⼊CSS代码。代码从别处复制⽽得。
样式表代码中,*表⽰当前控件,其它代码待定。
以上内容给出控件美化的基本实现思路,在样式表中,具体的CSS代码需掌握相关基础。
¥
5.9
百度文库VIP限时优惠现在开通,立享6亿+VIP内容
立即获取
QtDesigner控件背景颜色及边框设置
QtDesigner控件背景颜⾊及边框设置
需求:在Qt Designer中,从⼯具栏拖⼀个Frame(框架)到MainWindow(主窗⼝),为了美观,想把Frame的边框调宽,颜⾊设置为红⾊。问题:本⼈是VS C#⽤户,习惯了再控件属性中设置边框颜⾊和宽度,但在Qt设计中,属性并不提供相应功能,因此⽆法轻易实现。
解决:通过参考他⼈设计,发现在Frame控件的属性styleSheet中,可以进⾏样式编辑来实现所需功能。
第 1 页
详述:以上为问题与解决思路,详细的实现涉及到CSS级联样式表,下⾯将通过⼏个例⼦来介绍⼀下怎样使⽤Qt中的部件类型设计。
1 设置⼀个按钮的背景⾊和边框:background-color =yellowboder=2px
选中⽬标控件,点击stylesheet属性,在d出的编辑样式表中输⼊CSS代码。
2 设置Frame边框颜⾊和线宽
选中Frame控件,在stylesheet属性的编辑样式表输⼊CSS代码。代码从别处复制⽽得。
样式表代码中,*表⽰当前控件,其它代码待定。
以上内容给出控件美化的基本实现思路,在样式表中,具体的CSS代码需掌握相关基础。
注意, QT有些对话框默认用的native对话框,需要重新设置。你要改窗口边框的样式?虽然Qt不支持,但有一个折衷的方法:把窗口设置成没有边框的,然后在client区域做出自定义的边框,实现边框的部分功能。这样看起来像是改变了窗口的样式。
Qt faq有一个例子,贴到这里格式乱掉,建议谷歌搜索"Qt faq How can I handle events in the titlebar and change its color etc"
#include <QtGui>class TitleBar :publicQWidget{Q_OBJECTpublic:TitleBar(QWidget*parent){// Don't let this widget inherit the parent's backround colorsetAutoFillBackground(true) // Use a brush with a Highlight color role to render the background setBackgroundRole(QPalette::Highlight) minimize =newQToolButton(this) maximize =newQToolButton(this) close=newQToolButton(this) // Use the style to set the button pixmapsQPixmap pix = style()->standardPixmap(QStyle::SP_TitleBarCloseButton) close->setIcon(pix) maxPix = style()->standardPixmap(QStyle::SP_TitleBarMaxButton) maximize->setIcon(maxPix) pix = style()->standardPixmap(QStyle::SP_TitleBarMinButton) minimize->setIcon(pix)restorePix = style()->standardPixmap(QStyle::SP_TitleBarNormalButton) minimize->setMinimumHeight(20) close->setMinimumHeight(20) maximize->setMinimumHeight(20) QLabel*label =newQLabel(this) label->setText("Window Title") parent->setWindowTitle("Window Title") QHBoxLayout*hbox =newQHBoxLayout(this) hbox->addWidget(label) hbox->addWidget(minimize) hbox->addWidget(maximize) hbox->addWidget(close) hbox->insertStretch(1,500) hbox->setSpacing(0) setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed) maxNormal = false connect(close, SIGNAL( clicked()), parent, SLOT(close())) connect(minimize, SIGNAL( clicked()),this, SLOT(showSmall())) connect(maximize, SIGNAL( clicked()),this, SLOT(showMaxRestore())) }publicslots:void showSmall(){parentWidget()->showMinimized() }void showMaxRestore(){if(maxNormal){parentWidget()->showNormal() maxNormal =!maxNormal maximize->setIcon(maxPix) }else{parentWidget()->showMaximized() maxNormal =!maxNormal maximize->setIcon(restorePix) }}protected:void mousePressEvent(QMouseEvent*me){startPos = me->globalPos() clickPos = mapToParent(me->pos()) }void mouseMoveEvent(QMouseEvent*me){if(maxNormal)return parentWidget()->move(me->globalPos()- clickPos) } private:QToolButton*minimize QToolButton*maximize QToolButton*close QPixmap restorePix, maxPix bool maxNormal QPoint startPos QPoint clickPos}class Frame :publicQFrame{public:Frame(){m_mouse_down = false setFrameShape(Panel) // Make this a borderless window which can't// be resized or moved via the window systemsetWindowFlags(Qt::FramelessWindowHint) setMouseTracking(true) m_titleBar =new TitleBar(this) m_content =newQWidget(this) QVBoxLayout*vbox =newQVBoxLayout(this) vbox->addWidget(m_titleBar) vbox->setMargin(0) vbox->setSpacing(0) QVBoxLayout*layout =newQVBoxLayout(this) layout->addWidget(m_content) layout->setMargin(5) layout->setSpacing(0) vbox->addLayout(layout) }// Allows you to access the content area of the frame// where widgets and layouts can be addedQWidget*contentWidget()const{return m_content}TitleBar *titleBar()const{return m_titleBar}void mousePressEvent(QMouseEvent*e){m_old_pos = e->pos() m_mouse_down = e->button()==Qt::LeftButton }void mouseMoveEvent(QMouseEvent*e){int x = e->x() int y = e->y() if(m_mouse_down){int dx = x - m_old_pos.x() int dy = y - m_old_pos.y() QRect g = geometry() if(left)g.setLeft(g.left()+ dx) if(right)g.setRight(g.right()+ dx) if(bottom)g.setBottom(g.bottom()+ dy) setGeometry(g) m_old_pos =QPoint(!left ? e->x(): m_old_pos.x(), e->y()) }else{QRect r = rect() left = qAbs(x - r.left())<=5 right = qAbs(x - r.right())<=5 bottom = qAbs(y - r.bottom())<=5 bool hor = left | right if(hor &&bottom){if(left)setCursor(Qt::SizeBDiagCursor) elsesetCursor(Qt::SizeFDiagCursor) }elseif(hor){setCursor(Qt::SizeHorCursor) }elseif(bottom){setCursor(Qt::SizeVerCursor) }else{setCursor(Qt::ArrowCursor) }}}void mouseReleaseEvent(QMouseEvent*e){m_mouse_down = false }private:TitleBar *m_titleBar QWidget*m_content QPoint m_old_pos bool m_mouse_down bool left, right, bottom} #include "main.moc" int main(int argc,char**argv){QApplication app(argc, argv) Frame box box.move(0,0) QVBoxLayout*l =newQVBoxLayout(box.contentWidget()) l->setMargin(0) QTextEdit*edit =newQTextEdit(box.contentWidget()) l->addWidget(edit) box.show() return app.exec() }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)