Qt動態新增控制元件
前言
很多時候我們可以在UI designer上拖拽控制元件進行編寫UI,但有的時候需要的控制元件數量是未知的,這時候就需要在程式碼中進行編寫了。
效果
以下是新增2個控制元件組的效果
以下是新增20個控制元件組的效果,控制元件過多會自動新增滾動條
點選delete按鈕可以刪除所有控制元件組,同樣可以知道是哪個按鈕點選的。
實現
程式碼參考了網上的,自己做了一些修改。
建立一個新的控制元件組類,佈局,開出介面供外部呼叫
void setInfo(QString str_lb,QString str_btn);
void Mybtns::setInfo(QString str_lb, QString str_btn)
{
ui->label->setText(str_lb);
ui->pushButton->setObjectName(str_btn);
}
MAINWINDOW_H
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QHBoxLayout>
#include <QPushButton>
#include <QDebug>
#include "mybtns.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void slotBtnClicked();
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
QList<Mybtns*> list_widget;
};
#endif // MAINWINDOW_H
.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
for (int i = 0; i < 20; i++)
{
Mybtns *widget = new Mybtns();
list_widget.append(widget);
ui->vlayout->addWidget(widget);
widget->setInfo("張三(123456)","#" + QString::number(i));
}
QList<QPushButton *> btn = this->findChildren<QPushButton *>();
foreach (QPushButton * b, btn) {
connect(b, SIGNAL(clicked()), this, SLOT(slotBtnClicked()));
}
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::slotBtnClicked()
{
QPushButton *btn = (QPushButton *)sender();
QString objectName = btn->objectName();
if(objectName.indexOf("#") != -1)
{
objectName.replace("#","");
qDebug()<<objectName;
}
}
void MainWindow::on_pushButton_clicked()
{
int num = ui->vlayout->count(); // 獲取佈局中的item的數量
while( num){
QWidget *widget = ui->vlayout->itemAt(num - 1)->widget();
ui->vlayout->removeWidget(widget);
delete widget;
num --;
}
}
連結
連結: Qt動態新增控制元件demo
相關文章
- 動態新增easyui 控制元件UI控制元件
- 動態新增控制元件時,計算控制元件大小的解決方法控制元件
- Linux下快速靜態編譯Qt以及Qt動態/靜態版本共存Linux編譯QT
- 動態移動控制元件 (轉)控制元件
- mobx動態新增observable
- js動態新增svgJSSVG
- RecyclerView新增動態水印View
- QT控制元件大全QT控制元件
- QT實現可拖動自定義控制元件QT控制元件
- BCB動態生成控制元件控制元件
- WPF給控制元件新增運動動畫控制元件動畫
- jquery為動態新增元素新增事件薦jQuery事件
- HDFS動態新增節點
- JavaScript動態新增li元素JavaScript
- javascript 動態新增表格行JavaScript
- 動態計算控制元件高度控制元件
- 聊聊QT新增MySQL驅動依賴的問題QTMySql
- Elastic-Job:動態新增任務,支援動態分片AST
- Qt實現控制元件的漸隱漸現動效QT控制元件
- 為IHttpClientFactory新增動態命名配置HTTPclient
- JqueryValidate 動態新增驗證jQuery
- android動態新增ImageView注意AndroidView
- asp.net TreeView動態新增ASP.NETView
- 訊息處理:利用控制元件的動態派生[RunTime],為控制元件新增該控制元件未定義的訊息對映 (轉)控制元件
- Android 動態佈局 動態生成 銷燬控制元件 改變控制元件的位置等Android控制元件
- 動態綁資料(Repeater控制元件控制元件
- qt新增程式啟動畫面QT動畫
- 【轉載】WPF中TreeView控制元件資料繫結和後臺動態新增資料(一)View控制元件
- Qt實現炫酷啟動圖-動態進度條QT
- JavaScript 動態新增與刪除元素JavaScript
- JavaScript動態為table表格新增行JavaScript
- JavaScript動態向表格新增資料JavaScript
- QT佈局之控制元件空隙QT控制元件
- QT時鐘控制元件顯示QT控制元件
- Qt實現自定義控制元件QT控制元件
- QT常用控制元件(三)——自定義控制元件封裝QT控制元件封裝
- QT實現動態顯示系統時間QT
- QT mainwindow UI介面新增工具欄QTAIUI