QT widget 使用小计

本文详细介绍了QT库中常用的GUI组件,包括QPushButton、QToolBox、QGroupBox、QToolBox、QTabWidget、QComboBox、QLineEdit、QSpinBox、QDateTimeEdit、QSlider和QLabel的使用,涵盖信号、属性及实例代码,是QT界面开发的基础教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

push button

信号:clicked()
实例代码:

connect(ui->lxpushButton, SIGNAL(clicked()), this, SLOT(myslots()));

tool box

实例代码:

    action = new QAction("&Open", this);
    action2 = new QAction("&Close", this);
    menu = new QMenu();

    QList<QAction *> fileActions;
    fileActions.push_back(action);
    fileActions.push_back(action2);
    menu->addMenu("&File")->addMenu("web safe")->addActions(fileActions);
    menu->addMenu("&Edit")->addMenu("app safe")->addActions(fileActions);

    ui->lxtoolButton->setText("tool box");
    ui->lxtoolButton->setPopupMode(QToolButton::InstantPopup);
    ui->lxtoolButton->setMenu(menu);
    connect(ui->lxtoolButton, SIGNAL(triggered(QAction *)), this, SLOT(paction(QAction *)));

效果:
这里写图片描述

group box

实例代码:

    ui->gbSetNetWork->setChecked(false);
    ui->gbSetNetWork->setStyleSheet(
   QString::fromUtf8("QGroupBox\ 
    { border: 1px solid green; \ // 设置边框1个像素,绿色填充
      border-radius: 4px; \      // 实现圆角边框效果,第一个参数是水平半径
      margin-top: 6px\           // 设置对象顶边的外延边距,外延边距始终透明
    }\
    QGroupBox::title{top: -9 ex; left:8px}}")); // 设置标题显示的样式

效果:
这里写图片描述

QToolBox

信号: currentChanged
实例代码:

connect(ui->toolBox, SIGNAL(currentChanged(int)), this, SLOT(GetCurrent(int)));

QTabWidget

信号:

tabCloseRequested(int)
currentChanged(int)

实例代码:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    connect(ui->tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(CloseTab(int)));

    connect(ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(PrintTab(int)));
}

void MainWindow::CloseTab(int index)
{
    ui->tabWidget->removeTab(index);
}

void MainWindow::PrintTab(int index)
{
    qDebug() << "print tab " << index;
}

属性:

属性名注释
tabsClosable设置Tab是否可以关闭
movable设置Tab是否可以左右拖动
TabShape设置Tab的形状

效果:
这里写图片描述

QComboBox

信号:

信号名注释
activated (int index) (const QString&)点击任意一项即会触发,SetCurrentIndex调用时不会触发
currentIndexChanged (int index) (const QString&)点击任意一项即会触发,SetCurrentIndex调用时也会触发
editTextChanged (int index) (const QString&)当combobox属性edit是true时,如果修改文本,该信号在每次输入时会触发
highlighted (int index) (const QString&)combobox中鼠标放在任何一个选项上即会触发

实例代码:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    connect(ui->comboBox, SIGNAL(activated(const QString&)), this, SLOT(ActivatedGet(const QString&)));
    connect(ui->comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(currentIndexChangedGet(int)));
    connect(ui->comboBox, SIGNAL(editTextChanged(const QString&)), this, SLOT(editText(const QString &)));
    connect(ui->comboBox, SIGNAL(highlighted(const QString&)), this, SLOT(high(const QString&)));
}

void MainWindow::ActivatedGet(const QString &str)
{
    qDebug() << "activated " << str;
}

void MainWindow::currentIndexChangedGet(int index)
{
    qDebug() << "currentIndexChanged " << index;
}

void MainWindow::editText(const QString &str)
{
    qDebug() << "editTextChanged " << str;
}

void MainWindow::high(const QString &str)
{
    qDebug() << "highlighted" << str;
}

属性:

属性名注释
editable设置combobox是否可以修改内容

效果:
这里写图片描述

QLineEdit

信号:

信号名注释
cursorPositionChanged(int old, int cur)光标在编辑框中游走时即会出发,old标示光标之前的位置,cur标示现在位置
editingFinished()
returnPressed()按回车即触发
selectionChanged()鼠标选中条目时触发
textChanged(const QString&)文本改变时触发
textEdited(const QString&)文本改变时触发

实例代码:

    ui->lineEdit_1->setValidator(new QIntValidator(1, 100, this));

    QRegExp regx("[a-zA-Z0-9]+$");
    QValidator *validator = new QRegExpValidator(regx, ui->lineEdit_2);
    ui->lineEdit_2->setValidator(validator);

    ui->lineEdit_3->setInputMask("000.000.000.000");

    ui->lineEdit_4->setEchoMode(QLineEdit::Password);

    connect(ui->lineEdit_1, SIGNAL(cursorPositionChanged(int, int)), this, SLOT(curChg(int, int)));
    connect(ui->lineEdit_1, SIGNAL(editingFinished()), this , SLOT(editOver));
    connect(ui->lineEdit_1, SIGNAL(returnPressed()), this, SLOT(returnPress()));
    connect(ui->lineEdit_1, SIGNAL(selectionChanged()), this, SLOT(selectChanged()));
    connect(ui->lineEdit_1, SIGNAL(textChanged(const QString&)), this, SLOT(textChange(const QString&)));
    connect(ui->lineEdit_1, SIGNAL(textEdited(const QString&)), this, SLOT(textEdited(const QString&)));

效果:
这里写图片描述

QSpinBox

信号:

信号名注释
valueChanged(const QString &) (int)值是有效变化的时候即触发

实例代码:

connect(ui->spinBox, SIGNAL(valueChanged(const QString &)), this, SLOT(valChg(const QString &)));

属性:

属性名注释
wrapping当设置true时, 计数到最大值即反转到最小值重新计数
buttonSymbols设置spinBox显示按钮的风格
Minimum设置最小有效数
Maximum设置最大有效数
singleStep设置每次改变的步长

效果:
这里写图片描述

QDateTimeEdit

信号:

dateChanged(const QDate &)
timeChanged(const QTime &)
dateTimeChanged(const QDateTime &)

日期格式:

时间格式:

实例代码:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->dateTimeEdit, SIGNAL(dateChanged(const QDate &)), this, SLOT(dateChgGet(const QDate &)));
    connect(ui->dateTimeEdit, SIGNAL(timeChanged(const QTime &)), this, SLOT(timeChgGet(const QTime &)));
    connect(ui->dateTimeEdit, SIGNAL(dateTimeChanged(const QDateTime &)), this, SLOT(dateTimeChgGet(const QDateTime &)));

    ui->dateTimeEdit->setTime(QTime::currentTime());
    ui->dateTimeEdit->setDate(QDate::currentDate());
    ui->dateTimeEdit->setDisplayFormat("yyyy.MM.dd aph:mm:ss:z");
    ui->dateTimeEdit->setCalendarPopup(true);
}

效果:
这里写图片描述

QSlider

信号:

valueChanged(int)
sliderPressed()
sliderMoved(int)
sliderReleased()

实例代码:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    connect(ui->horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(valChg(int)));
    connect(ui->horizontalSlider, SIGNAL(sliderPressed()), this, SLOT(sliderPressed()));
    connect(ui->horizontalSlider, SIGNAL(sliderMoved(int)), this, SLOT(sliderMoved(int)));
    connect(ui->horizontalSlider, SIGNAL(sliderReleased()), this, SLOT(sliderRelease()));
}

属性:

tickPosition
tickInterval

效果:
这里写图片描述

QLabel

信号:

linkActivated(const QString &link)
linkHovered(const QString &link)

实例代码:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->label->setTextFormat(Qt::RichText);
    ui->label->setText(tr("<a href=\"http://www.baidu.com/\">clicked me</a>"));

    ui->label_3->setTextFormat(Qt::RichText);
    ui->label_3->setText(tr("<font size=3 color=green><I>test</T></font>"));

    QPixmap *p = new QPixmap(30, 20);
    p->fill(Qt::darkMagenta);
    ui->label_2->setPixmap(*p);

    connect(ui->label, SIGNAL(linkHovered(const QString &)), this, SLOT(linkHovered(const QString &)));
    connect(ui->label, SIGNAL(linkActivated(const QString &)), this, SLOT(linkActivated(const QString &)));
}

效果:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值