qt笔记之qml下拉标签组合框增加发送按钮发送标签内容
code review!
文章目录
- qt笔记之qml下拉标签组合框增加发送按钮发送标签内容
- 1.运行
- 2.文件结构
- 3.main.qml
- 4.main.cc
- 5.MyClass.h
- 6.MyClass.cc
- 7.CMakeLists.txt
- 8.ComboBox.pro
- 9.qml.qrc
1.运行
2.文件结构
3.main.qml
代码
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
Window {
visible: true
width: 640
height: 480
title: qsTr("QML ComboBox C++ signal")
property string selectedOption
ComboBox {
id: comboBox
x: 12
y: 58
width: 147
height: 25
model: ["选项一", "选项二", "选项三"]
Component.onCompleted: {
selectedOption = "选项一"
}
onCurrentIndexChanged: {
selectedOption = comboBox.currentText;
}
}
Button {
id: button
x: 18
y: 134
text: qsTr("发送")
onClicked: {
myClass_rename.setValue(selectedOption);
}
}
}
4.main.cc
代码
#include "MyClass.h"
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
Q_DECLARE_METATYPE(MyClass *)
int main(int argc, char *argv[]) {
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
MyClass myClass;
engine.rootContext()->setContextProperty("myClass_rename", &myClass);
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
5.MyClass.h
代码
#ifndef MYCLASS_H
#define MYCLASS_H
#include <QObject>
#include <QString>
#include <QVector>
#include <iomanip>
#include <iostream>
class MyClass : public QObject {
Q_OBJECT
public:
explicit MyClass(QObject *parent = nullptr);
public slots:
void setValue(QString value);
};
#endif // MYCLASS_H
6.MyClass.cc
代码
#include "MyClass.h"
#include <QDebug>
MyClass::MyClass(QObject *parent) : QObject(parent) {}
void MyClass::setValue(QString value) {
qDebug() << "value= " << value;
}
7.CMakeLists.txt
代码
cmake_minimum_required(VERSION 2.8.12)
project(ComboBox LANGUAGES CXX)
set(Qt5_DIR "/home/user/Qt/5.15.2/gcc_64/lib/cmake/Qt5")
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
find_package(Qt5 COMPONENTS Core Quick REQUIRED)
include_directories(
# "src"
"*.h"
)
file (GLOB SRCS
# "src/cc/*.cc"
"*.cc"
)
file (GLOB INCS
# "src/inc/*.h"
"*.h"
)
add_executable(${PROJECT_NAME} ${SRCS} ${INCS} "main.cc" "qml.qrc")
target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Quick -pthread)
8.ComboBox.pro
代码
QT += quick qml
CONFIG += c++11
INCLUDEPATH += ./
LIBS += -L/usr/lib/x86_64-linux-gnu -lz
LIBS += /usr/lib/x86_64-linux-gnu/libboost_*
#LIBS += /usr/lib/aarch64-linux-gnu/libboost_*
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Refer to the documentation for the
# deprecated API to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
./main.cc
RESOURCES += ./qml.qrc \
# image.qrc
# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH
# Additional import path used to resolve QML modules just for Qt Quick Designer
QML_DESIGNER_IMPORT_PATH =
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
9.qml.qrc
代码
<RCC>
<qresource prefix="/">
<file>main.qml</file>
</qresource>
</RCC>