Преглед изворни кода

设计数据存储结构,尝试实现元素的添加和点击触发

Menglan_Luo пре 2 година
родитељ
комит
5a673f8111
4 измењених фајлова са 141 додато и 33 уклоњено
  1. 56 1
      mainwindow.cpp
  2. 8 1
      mainwindow.h
  3. 77 31
      mainwindow.ui
  4. BIN
      代码设计.pdf

+ 56 - 1
mainwindow.cpp

@@ -1,6 +1,11 @@
 #include "mainwindow.h"
 #include "ui_mainwindow.h"
 #include "basicproperty.h"
+#include <QListWidgetItem>
+#include <QListWidget>
+#include <QLabel>
+#include <iostream>
+#include <QHBoxLayout>
 MainWindow::MainWindow(QWidget *parent)
     : QMainWindow(parent)
     , ui(new Ui::MainWindow)
@@ -10,6 +15,24 @@ MainWindow::MainWindow(QWidget *parent)
     ui->tabWidget->addTab(new BasicProperty(),"邮箱");
     ui->tabWidget->addTab(new BasicProperty(),"草地");
     ui->tabWidget->addTab(new BasicProperty(),"彩绘蛋壳");
+
+    QListWidgetItem *item = new QListWidgetItem;
+    ui->listWidget->addItem(item);
+    QWidget *w = new QWidget(ui->listWidget);
+    //图标
+    QLabel *label = new QLabel();
+    QPixmap pix("/Users/menglanluo/菜狗.png");
+    label->setPixmap(pix.scaled(15,15,Qt::KeepAspectRatio));
+    //元素名称
+    QLineEdit *edit = new QLineEdit();
+    edit->setText("新增元素");
+    QHBoxLayout *layout = new QHBoxLayout(w);
+    layout->addWidget(label);
+    layout->addWidget(edit);
+    connect(edit,SIGNAL(editingfinished()),this,SLOT(on_lineEdit_editingFinished()));
+    w->setLayout(layout);
+    w->show();
+    ui->listWidget->setItemWidget(item,w);
 }
 
 MainWindow::~MainWindow()
@@ -18,9 +41,41 @@ MainWindow::~MainWindow()
 }
 
 
+void MainWindow::on_lineEdit_editingFinished()
+{
+    if(ui->lineEdit->isModified()){
+        std::cout<<"finish editing"<<std::endl;
+        std::cout<<"new text is:"<<qPrintable(ui->lineEdit->text())<<std::endl;
+    }
+}
+
 
-void MainWindow::on_pushButton_addItem_clicked()
+void MainWindow::on_pushButton_addElem_clicked()
+{
+    QListWidgetItem *item = new QListWidgetItem;
+    ui->listWidget->addItem(item);
+    QWidget *w = new QWidget;
+    //图标
+    QLabel *label = new QLabel(w);
+    QPixmap pix("/Users/menglanluo/菜狗.png");
+    label->setPixmap(pix.scaled(15,15,Qt::KeepAspectRatio));
+    //元素名称
+    QLineEdit *edit = new QLineEdit(w);
+    edit->setText("新增元素");
+    QHBoxLayout *layout = new QHBoxLayout;
+    layout->addWidget(label);
+    layout->addWidget(edit);
+//    connect(edit,SIGNAL(editingfinished()),this,SLOT(on_lineEdit_editingFinished()));
+    w->setLayout(layout);
+    ui->listWidget->setItemWidget(item,edit);
+}
+
+
+void MainWindow::on_pushButton_addElem_released()
 {
 
 }
 
+
+
+

+ 8 - 1
mainwindow.h

@@ -2,6 +2,7 @@
 #define MAINWINDOW_H
 
 #include <QMainWindow>
+#include <QListWidgetItem>
 
 QT_BEGIN_NAMESPACE
 namespace Ui { class MainWindow; }
@@ -16,7 +17,13 @@ public:
     ~MainWindow();
 
 private slots:
-    void on_pushButton_addItem_clicked();
+    void on_lineEdit_editingFinished();
+
+    void on_pushButton_addElem_clicked();
+
+    void on_pushButton_addElem_released();
+
+    void on_listWidget_itemChanged(QListWidgetItem *item);
 
 private:
     Ui::MainWindow *ui;

+ 77 - 31
mainwindow.ui

@@ -14,37 +14,83 @@
    <string>MainWindow</string>
   </property>
   <widget class="QWidget" name="centralwidget">
-   <layout class="QVBoxLayout" name="verticalLayout_2">
-    <item>
-     <widget class="QPushButton" name="pushButton_addItem">
-      <property name="text">
-       <string>addItem</string>
-      </property>
-     </widget>
-    </item>
-    <item>
-     <widget class="QTabWidget" name="tabWidget">
-      <property name="layoutDirection">
-       <enum>Qt::LeftToRight</enum>
-      </property>
-      <property name="tabPosition">
-       <enum>QTabWidget::West</enum>
-      </property>
-      <property name="currentIndex">
-       <number>-1</number>
-      </property>
-      <property name="elideMode">
-       <enum>Qt::ElideRight</enum>
-      </property>
-      <property name="usesScrollButtons">
-       <bool>false</bool>
-      </property>
-      <property name="tabsClosable">
-       <bool>true</bool>
-      </property>
-     </widget>
-    </item>
-   </layout>
+   <widget class="QTabWidget" name="tabWidget">
+    <property name="geometry">
+     <rect>
+      <x>12</x>
+      <y>46</y>
+      <width>491</width>
+      <height>481</height>
+     </rect>
+    </property>
+    <property name="layoutDirection">
+     <enum>Qt::LeftToRight</enum>
+    </property>
+    <property name="tabPosition">
+     <enum>QTabWidget::West</enum>
+    </property>
+    <property name="currentIndex">
+     <number>-1</number>
+    </property>
+    <property name="elideMode">
+     <enum>Qt::ElideRight</enum>
+    </property>
+    <property name="usesScrollButtons">
+     <bool>false</bool>
+    </property>
+    <property name="tabsClosable">
+     <bool>true</bool>
+    </property>
+   </widget>
+   <widget class="QListWidget" name="listWidget">
+    <property name="geometry">
+     <rect>
+      <x>530</x>
+      <y>50</y>
+      <width>131</width>
+      <height>471</height>
+     </rect>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="pushButton_addElem">
+    <property name="geometry">
+     <rect>
+      <x>670</x>
+      <y>400</y>
+      <width>113</width>
+      <height>32</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>添加</string>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="pushButton_delElem">
+    <property name="geometry">
+     <rect>
+      <x>670</x>
+      <y>450</y>
+      <width>113</width>
+      <height>32</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>删除</string>
+    </property>
+   </widget>
+   <widget class="QLineEdit" name="lineEdit">
+    <property name="geometry">
+     <rect>
+      <x>690</x>
+      <y>70</y>
+      <width>113</width>
+      <height>21</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>健康快乐</string>
+    </property>
+   </widget>
   </widget>
   <widget class="QMenuBar" name="menubar">
    <property name="geometry">