#include "widgetlinktext.h"
WidgetLinkText::WidgetLinkText(QWidget *parent, Qt::WindowFlags f):QWidget(parent, f)
{
m_lineEdit = new QLineEdit(this);
m_button = new QPushButton(this);
m_button->setText("...");
connect(m_button, &QPushButton::clicked, this, &WidgetLinkText::slot_button);
}
void WidgetLinkText::updateWidget()
{
double lineWidth = rect().width()*93/100.0;
double buttonWidth = rect().width()*7/100.0;
m_lineEdit->setGeometry(rect().x(), rect().y(), lineWidth, rect().height());
m_button->setGeometry(rect().topRight().x()-buttonWidth, rect().y(), buttonWidth, rect().height());
}
void WidgetLinkText::showEvent(QShowEvent *event)
{
updateWidget();
QWidget::showEvent(event);
}
void WidgetLinkText::resizeEvent(QResizeEvent *event)
{
updateWidget();
QWidget::resizeEvent(event);
}
void WidgetLinkText::slot_button()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
"",
tr(""));
if(fileName == "")
return;
m_lineEdit->setText(fileName);
}
QT C++文本加按钮的组合控件测试
需积分: 0 87 浏览量
更新于2023-01-28
收藏 5KB RAR 举报
QT C++是一种强大的跨平台应用程序开发框架,特别适合创建GUI(图形用户界面)应用。在“QT C++文本加按钮的组合控件测试”中,我们关注的是如何将文本控件(如QLineEdit)和按钮控件(QPushButton)结合使用,以实现特定的功能。这个功能是:当用户点击按钮时,系统弹出一个文件选择对话框,用户选择文件后,文件的路径会自动显示在文本控件中。
我们需要包含必要的QT库,例如`#include <QtWidgets>`,这将使我们能够使用QLineEdit和QPushButton类。接着,我们需要创建一个窗口或者对话框来放置这些控件,可以使用`QWidget`或`QDialog`作为基础类。
```cpp
#include <QtWidgets>
class MyWidget : public QWidget {
Q_OBJECT
public:
MyWidget(QWidget *parent = nullptr);
~MyWidget();
private slots:
void onButtonClicked();
private:
QLineEdit *lineEdit;
QPushButton *button;
};
```
在构造函数中,我们实例化这两个控件并设置它们的属性,然后将按钮的信号`clicked()`与槽函数`onButtonClicked()`连接起来。槽函数会在按钮被点击时执行。
```cpp
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
lineEdit = new QLineEdit(this);
button = new QPushButton("选择文件", this);
// 设置布局,使得文本框和按钮在窗口中排列
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(lineEdit);
layout->addWidget(button);
// 连接信号和槽
connect(button, &QPushButton::clicked, this, &MyWidget::onButtonClicked);
}
```
在`onButtonClicked()`槽函数中,我们将调用`QFileDialog`来打开文件选择对话框,并将选定的文件路径设置到文本框中。
```cpp
void MyWidget::onButtonClicked()
{
QString filePath = QFileDialog::getOpenFileName(this, "选择文件", "", tr("所有文件 (*)"));
if (!filePath.isEmpty()) {
lineEdit->setText(filePath);
}
}
```
至此,我们已经创建了一个简单的QT应用,它包含一个文本框和一个按钮。当用户点击按钮时,会打开一个文件选择对话框,用户可以选择任意文件,所选文件的路径会显示在文本框内。这种组合控件的实现方式可以灵活地应用到其他复杂的QT项目中,比如树控件(QTreeView)或表格控件(QTableView),通过类似的逻辑,用户可以方便地选择数据源或进行其他交互操作。
此外,QT C++提供了丰富的控件和事件处理机制,使得开发者能够创建出功能强大且用户友好的界面。对于大型项目,良好的设计模式和模块化编程也是至关重要的,这样可以保持代码的清晰和可维护性。同时,QT的信号和槽机制是其核心特性之一,它使得对象间的通信变得简单直观,有助于构建响应式的应用程序。在实际开发中,开发者还需要了解QT的资源管理、线程模型以及国际化等高级主题,以提升应用的性能和用户体验。
~喵喵喵~
- 粉丝: 1
- 资源: 1
最新资源
- OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR).rar
- OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR)130224.rar
- shopxx_src.rar
- 聊天系统项目全套技术资料100%好用.zip
- tot-jsp-cms.rar
- s2shDemo.rar
- webdgs.rar
- vijun-1.0-release.rar
- 博客系统网站(JSP+SERVLET+MYSQL).rar
- 博客系统网站(JSP+SERVLET+MYSQL)130222.rar
- 博客系统(struts+hibernate+spring)130225.rar
- 超市综合管理信息系统.rar
- 数据爬虫项目全套技术资料100%好用.zip
- 车辆管理系统(struts+hibernate+spring+oracle)130225.rar
- 车辆管理系统(struts+hibernate+spring+oracle).rar
- 共创在线考试系统(JSP+SERVLET).rar