line_edit_with_button.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011, Willow Garage, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * * Neither the name of the Willow Garage, Inc. nor the names of its
14  * contributors may be used to endorse or promote products derived from
15  * this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27  * POSSIBILITY OF SUCH DAMAGE.
28  */
29 
31 
32 #include <QPushButton>
33 #include <QLineEdit>
34 #include <QHBoxLayout>
35 #include <QKeyEvent>
36 #include <QApplication>
37 
38 namespace rviz
39 {
40 LineEditWithButton::LineEditWithButton(QWidget* parent) : QLineEdit(parent)
41 {
42  button_ = new QPushButton(this);
43  button_->setText("...");
44  button_->setCursor(Qt::ArrowCursor);
45  button_->setDefault(false);
46  button_->setAutoDefault(false);
47  button_->setFocusPolicy(Qt::NoFocus);
48 
49  connect(button_, &QPushButton::clicked, this, &LineEditWithButton::onButtonClick);
50 }
51 
52 void LineEditWithButton::resizeEvent(QResizeEvent* event)
53 {
54  // This widget does not use a QLayout object, because I want the
55  // child button to be sized and positioned a specific way. This
56  // function lays out the child button based on the new size of the
57  // LineEdit.
58 
59  int padding = 1;
60 
61  // Make sure the text area doesn't go under the button.
62  setTextMargins(padding, padding, height(), padding);
63 
64  // Call the original resize handler.
65  QLineEdit::resizeEvent(event);
66 
67  // Make the button square, matching the height of this widget minus
68  // padding, and located all the way to the right.
69  int button_width = height() - 2 * padding;
70  int button_height = button_width;
71  button_->setGeometry(width() - button_width - padding, padding, button_width, button_height);
72 }
73 
74 } // end namespace rviz
rviz::LineEditWithButton::resizeEvent
void resizeEvent(QResizeEvent *event) override
Definition: line_edit_with_button.cpp:52
rviz::LineEditWithButton::LineEditWithButton
LineEditWithButton(QWidget *parent=nullptr)
Definition: line_edit_with_button.cpp:40
line_edit_with_button.h
rviz
Definition: add_display_dialog.cpp:54
rviz::LineEditWithButton::onButtonClick
virtual void onButtonClick()
Override this to do something when the button is clicked.
Definition: line_edit_with_button.h:59
rviz::LineEditWithButton::button_
QPushButton * button_
Definition: line_edit_with_button.h:64


rviz
Author(s): Dave Hershberger, David Gossow, Josh Faust, William Woodall
autogenerated on Fri Dec 13 2024 03:31:02