每个QWidget都有contentsMargins函数,善用QMargins

m_pSearchLineEdit = new QLineEdit();
QPushButton *pSearchButton = new QPushButton(this);

pSearchButton->setCursor(Qt::PointingHandCursor);
pSearchButton->setFixedSize(22, 22);
pSearchButton->setToolTip(QStringLiteral("搜索"));
pSearchButton->setStyleSheet("QPushButton{border-image:url(:/images/icon_search_normal); background:transparent;} \
                                     QPushButton:hover{border-image:url(:/images/icon_search_hover)}                                      QPushButton:pressed{border-image:url(:/images/icon_search_press)}");

//防止文本框输入内容位于按钮之下
QMargins margins = m_pSearchLineEdit->textMargins();
m_pSearchLineEdit->setTextMargins(margins.left(), margins.top(), pSearchButton->width(), margins.bottom());
m_pSearchLineEdit->setPlaceholderText(QStringLiteral("请输入搜索内容"));

QHBoxLayout *pSearchLayout = new QHBoxLayout();
pSearchLayout->addStretch();
pSearchLayout->addWidget(pSearchButton);
pSearchLayout->setSpacing(0);
pSearchLayout->setContentsMargins(0, 0, 0, 0);
m_pSearchLineEdit->setLayout(pSearchLayout);

connect(pSearchButton, SIGNAL(clicked(bool)), this, SLOT(search()));

http://blog.csdn.net/u011012932/article/details/50357523

http://doc.qt.io/qt-5/qwidget.html#contentsMargins

时间: 2024-10-14 18:09:57

每个QWidget都有contentsMargins函数,善用QMargins的相关文章

QSizePolicy可均匀调整控件的大小,还可设置比例,非常完美(每个QWidget都有这个功能)

http://blog.csdn.net/liang19890820/article/details/51986284 它是QWidget的固有属性: http://doc.qt.io/qt-4.8/qwidget.html#sizePolicy-prop Layout Management 引擎: http://doc.qt.io/qt-4.8/layout.html QWidget::sizeHint()函数默认返回一个无效值: http://doc.qt.io/qt-4.8/qwidget

QTabWiget Change Color 改变颜色(每个QWidget都有一个自己的调色板palette,设置它的颜色,然后setAutoFillBackground即可)

Qt中的QTabWiget 类提供了一个便签控件,但是这个控件默认初始化的颜色是白色,和原窗口的颜色不同,看起来非常的违和,所以我们希望将其的背景颜色设为当前窗口的背景颜色.我们所要做的就是先将应用程序窗口的背景颜色取出来,然后再赋给QTabWiget 类的每个标签,比如说我们有tab1和tab2两个标签,要改变其背景颜色可用如下代码: ui.tab1->setPalette(QWidget::palette().color(this->backgroundRole())); ui.tab1-

Qt中各个widget前后位置的设定(在Qt中,所有问题都要一分为二,QWidget体系和QGraphicsWidget体系)

这两天在总结一些以往project中遇到的问题,正好别组有同事问我关于Qt中各个widget窗口的前后位置是如何定义的,这里就总结一下: 在Qt中,所有问题都要一分为二,讨论两种不同的情况:一个是最常用的QWidget体系,而另外一个则是QGraphicsWidget体系. ①:在常用的QWidget体系中,设置前后位置是主要是用raise(),underStack(),hide()函数. 理论为:在Qt中每个widget窗口都维持着自己的一个创建栈(widget's stack.),栈里边存放

Qt中事件处理的方法(三种处理方法,四种覆盖event函数,notify函数,event过滤,事件处理器。然后继续传递给父窗口。可观察QWidget::event的源码,它是虚拟保护函数,可改写)

一.Qt中事件处理的方式 1.事件处理模式一 首先是事件源产生事件,最后是事件处理器对这些事件进行处理.然而也许大家会问, Qt中有这么多类的事件,我们怎么样比较简便的处理每个事件呢?设想,如果是每个事件都对应同一个事件处理器,在该事件处理器中对不同的事件进行分类处理,这样的弊端有两点:第一,导致该事件处理器过于臃肿复杂:第二,这样不便于扩展,当系统新增加事件类型或者是我们需要使用到自定义事件时,就不得不修改Qt的源码来达到目的.所以Qt设计者的做法是针对不同类型的事件提供不同的事件处理器与之对

accept()函数用来告诉Qt,事件处理函数“接收”了这个事件,不要再传递;ignore()函数则告诉Qt,事件处理函数“忽略”了这个事件,需要继续传递(看一下QWidget::mousePressEvent的实现,最为典型。如果希望忽略事件,只要调用父类的响应函数即可)

QEvent的accept()和ignore()一般不会用到,因为不如直接调用QWidget类的事件处理函数直接,而且作用是一样的,见下面的例子. 推荐直接调用QWidget的事件处理函数.而不是调用accept()和ignore(). 只有一种情况下,必须使用调用accept()和ignore(),那就是closeEvent(),在closeEvent()的事件处理函数中,必须调用accept()和ignore().即如果想窗口被关闭,那么必须显示调用event->accept():如果不想关

TWinControl的刷新过程(一共5个函数,默认都不是双缓冲,注意区分是TCustomControl还是Windows原生封装控件,执行流程不一样)

前提条件:要明白在TWinControl有以下四个函数的存在,注意都是虚函数: procedure Invalidate; override; procedure Update; override; procedure Repaint; override; // 相当于前两句的组合 procedure CMInvalidate(var Message: TMessage); message CM_INVALIDATE; 还有从TControl继承来的函数:    procedure Refres

Qt设置窗口的初始大小(使用sizeHint这个虚函数)

我们用qt创建一个窗口,先后显示它,代码如下: class Mywindow : public QMainWindow{ ..... } int main( int argc, char** argv ) { QApplication app( argc, argv ); Mywindow wind; wind.show(); return app.exec();} 发现窗口很小,查看它的方法,以及他的父类widget的方法,发现有个方法像是设置其初始大小的,setBaseSize,调用这个方法

QWidget

QWidget 最近在学习Qt,每次阅读官方英文API都只读取自己需要的一部分,但是面对庞大的英文,老是觉得获取信息像大海捞针一样困难.于是我决定从头到尾好好读一读英文介绍,然后根据自己的理解,把它翻译为中文,一方面可以增加自己的理解能力,同时也方便英文和我一样不好的同学,我会尽量按照原文来翻译,如果其中某些语句让你觉得有些晦涩甚至难以理解时,可以直接转到原版进行阅读,或者您觉得有更好的表述方法,都可以告诉我,我会改正,提高翻译质量.如果有一些错误,还请大家批评指正. 注:这里的widget我们

QWidget类参考

QWidget类是所有用户界面对象的基类. 详情请见-- #include <qwidget.h> 继承QObject和QPaintDevice. 被QButton.QFrame.QDialog.QComboBox.QDataBrowser.QDataView.QDateTimeEdit.QDesktopWidget.QDial.QDockArea.QGLWidget.QHeader.QMainWindow.QNPWidget.QScrollBar.QSizeGrip.QSlider.QSpi