前言
这里针对Qt Designger界面简单总结了一些示例。
Qt Designger界面控件
示例代码界面
示例源码实现
获取示例源码方式1:
通过gitee获取:gitee源码地址
获取示例源码方式2:
复制下面源码即可
.pro文件
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
CONFIG += qaxcontainer
QT += qml quick
QT += quickwidgets
# 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). Please consult the documentation of the
# deprecated API in order 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.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
# 编译时复制文件
CONFIG += file_copies
# 复制源文件目录
code.files = $$PWD/mainwindow.cpp
code1.files = $$PWD/mainwindow.h
win32 {
CONFIG(release, debug|release):{
#可执行文件生成路径
DESTDIR = $$PWD/release/
# 复制目标目录
code.path = $$PWD/release/
code1.path = $$PWD/release/
}
else:CONFIG(debug, debug|release):{
DESTDIR = $$PWD/../../debug/ControlsSummary/
# 复制目标目录
code.path = $$PWD/debug/
code1.path = $$PWD/debug/
}
}
COPIES +=code code1
RESOURCES += \
src.qrc
.h文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QShowEvent>
#include <QHideEvent>
#include <QMenuBar>
#include <QToolBar>
#include <QStatusBar>
#include <QTableWidget>
#include <QTreeWidget>
#include <QDockWidget>
#include <QStackedWidget>
#include <QTabWidget>
#include <QApplication>
#include <QLabel>
#include <QCheckBox>
#include <QPushButton>
#include <QLayout>
#include <QFormLayout>
#include <QMessageBox>
#include <QHeaderView>
#include <QProgressBar>
#include <QScrollBar>
#include <QActionGroup>
#include <QMessageBox>
#include <QImageReader>
#include <QImage>
#include <QStyleFactory>
#include <QTextBrowser>
#include <QFile>
#include <QDebug>
#include <QLineEdit>
#include <QMessageBox>
#include <QToolButton>
#include <QApplication>
#include <QRadioButton>
#include <QButtonGroup>
#include <QCheckBox>
#include <QCommandLinkButton>
#include <QDialogButtonBox>
#include <QStringListModel >
#include <QMenu>
#include <QVariant>
#include <QStandardItem>
#include <QListView>
#include <QColumnView>
#include <QUndoStack>
#include <QUndoView>
#include <QListWidget>
#include <QListWidgetItem>
#include <QTreeWidget>
#include <QGroupBox>
#include <QScrollArea>
#include <QToolBox>
#include <QTabWidget>
#include <QMdiArea>
#include <QTextBrowser>
#include <QFileDialog>
#include <QMdiSubWindow>
#include <QAxWidget>
#include <QComboBox>
#include <QFontComboBox>
#include <QPlainTextEdit>
#include <QSpinBox>
#include <QTimeEdit>
#include <QDial>
#include <QTimer>
#include <QScrollBar>
#include <QSlider>
#include<QKeySequenceEdit>
#include <QGraphicsView>
#include <QGraphicsRectItem>
#include <QCalendarWidget>
#include <QLCDNumber>
#include <QOpenGLWidget>
#include <QQuickWidget>
//key:撤销视图
class Mybtn: public QPushButton
{
Q_OBJECT
public:
Mybtn(const QString &text, QWidget* parent= nullptr): QPushButton(parent)
{
m_widget = parent;
this->setWindowFlag(Qt::FramelessWindowHint);
m_status = false;
setText(text);
setMouseTracking(true);
}
void mouseMoveEvent(QMouseEvent* event)
{
if(m_status)
{
if(event->pos().x() > m_widget->width() || event->pos().x() < 0)
return;
move(event->pos());
emit sigMove(this, event->pos());
}
}
void mousePressEvent(QMouseEvent* event)
{
if(event->button()==Qt::LeftButton)
m_status = true;
}
void mouseReleaseEvent(QMouseEvent* event)
{
m_status = false;
}
bool m_status;
QWidget* m_widget;
signals:
void sigMove(Mybtn*, QPoint);
};
//添加item
class addCommand :public QUndoCommand
{
public :
addCommand(Mybtn* btn, QUndoCommand* parent = 0)
:QUndoCommand(parent)
{
m_btn = btn;
setText("add btn");//undoView 中就会显示(父类的方法)
}
void redo() override//重写这两个函数
{
m_btn->show();
m_btn->move(0,0);
}
void undo() override
{
m_btn->hide();
}
private:
Mybtn* m_btn;
};
//key:撤销视图
//移动item
class moveCommand:public QUndoCommand
{
public:
moveCommand(Mybtn* btn, const QPoint oldPos,QUndoCommand* parent = 0)
:QUndoCommand(parent)
{
m_btn = btn;
m_oldPos = oldPos;
m_newPos = btn->pos();
}
void redo() override//重写这两个函数
{
m_btn->move(m_newPos);
setText(QString("Move btn:(%1,%2)")
.arg(m_newPos.x()).arg(m_newPos.y()));
}
void undo() override
{
m_btn->move(m_oldPos);
setText(QString("Move btn:(%1,%2)")
.arg(m_oldPos.x()).arg(m_oldPos.y()));
}
private:
Mybtn* m_btn;
QPoint m_oldPos;
QPoint m_newPos;
};
class RightWidget : public QWidget
{
Q_OBJECT
public:
RightWidget(QWidget* parent=nullptr):QWidget(parent)
{
QVBoxLayout* vbox = new QVBoxLayout(this);
QHBoxLayout* hbox = new QHBoxLayout;
m_labelTitle = new QLabel("关键代码", this);
QPushButton* btn = new QPushButton("运行效果", this);
m_textBrow = new QTextBrowser(this);
hbox->addWidget(m_labelTitle);
hbox->addWidget(btn);
vbox->addLayout(hbox);
vbox->addWidget(m_textBrow);
setLayout(vbox);
hbox->setMargin(0);
vbox->setMargin(0);
connect(btn,&QPushButton::clicked,this,[=](){
emit ClickBtn();
});
}
~RightWidget(){}
void SetText(QString key, QString fileName = "/mainwindow.cpp" )
{
m_labelTitle->setText(key + "关键代码");
QString path = QCoreApplication::applicationDirPath() + fileName;
QFile file(path);
if(file.open(QIODevice::ReadOnly))
{
QString str = file.readAll();
QStringList list = str.split("//key:" + key);
qDebug()<<"str:"<<str<<" key:"<<key<<" list:"<<list.length();
if(list.length() > 1)
m_textBrow->append(list.at(1));
}
file.close();
}
signals:
void ClickBtn();
private:
QTextBrowser* m_textBrow;
QLabel* m_labelTitle;
};
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
void InitWidget();
protected:
void showEvent(QShowEvent* event);
void hideEvent(QHideEvent* event);
signals:
void OnitemDoubleClicked(QString str);
private:
QStackedWidget* m_rightStackWidget;
QMap<QString ,RightWidget*> m_mapRightWidget;
};
#endif // MAINWINDOW_H
.cpp
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(1000,500);
}
MainWindow::~MainWindow()
{
}
void MainWindow::InitWidget()
{
QWidget* widget =new QWidget(this);
QHBoxLayout* hbox = new QHBoxLayout(widget);
m_rightStackWidget = new QStackedWidget(widget);
QTreeWidget* treeWidget = new QTreeWidget(widget);
hbox->addWidget(treeWidget);
hbox->addWidget(m_rightStackWidget);
widget->setLayout(hbox);
this->setCentralWidget(widget);
hbox->setMargin(0);
treeWidget->setFixedWidth(200);
//需加 #include <QStyleFactory>
treeWidget->setStyle(QStyleFactory::create("windows"));//显示节点虚线 - +
treeWidget->setColumnCount(1); //设置列数
treeWidget->headerItem()->setHidden(true);//隐藏表头
treeWidget->header()->setSectionResizeMode(QHeaderView::Stretch);//设置列宽自动分均
treeWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//禁止编辑
treeWidget->setSelectionBehavior(QAbstractItemView::SelectRows);//以行为单位选择
QStringList rootList;
rootList<< "Layouts" << "Spacers" << "Buttons" << "Item Views(Model-Based)"
<<"Item Widgets(Item-Based)" << "Containers" <<"Input Widgets" << "Display Widgets";
QList<QStringList> list;
QStringList layoutsList;
layoutsList << "Vertical Layout" << "Horizontal Layout" << "Grid Layout" << "Form Layout";
list.append(layoutsList);
QStringList SpacersList;
SpacersList << "Horizontal Spacer" << "Vertical Spacer";
list.append(SpacersList);
QStringList buttonsList;
buttonsList << "Push Button" << "Tool Button" << "Radio Button"
<< "Check box" << "Command Link Button" << "Dialog Button Box";
list.append(buttonsList);
QStringList itemViewsList;
itemViewsList << "List View" << "Tree View"
<< "Table View" << "Column View" << "Undo View";
list.append(itemViewsList);
QStringList itemWidgetsList;
itemWidgetsList << "List Widget" << "Tree Widget" << "Table Widget";
list.append(itemWidgetsList);
QStringList containersList;
containersList << "Group Box" << "Scroll Area" << "Tool Box"
<< "Tab Widget" << "Stacked Widget" << "Frame"
<< "Widget" << "MDI Area" << "Dock Widget" << "QAxWidget";
list.append(containersList);
QStringList inputWidgetsList;
inputWidgetsList << "Combo Box" << "Font Combo Box" << "Line Edit"
<< "Text Edit" << "Plain Text Edit" << "Spin Box"
<< "Double Spin Box" << "Time Edit" << "Data Edit"
<< "Data/Time Edit" << "Dial" << "Horizontal Scroll Bar"
<< "Vertical Scroll Bar" << "Horizontal Slider"<< "Vertical Slider" << "Key Sequence Edit";
list.append(inputWidgetsList);
QStringList displaysList;
displaysList << "Label" << "Text Browser" << "Graphics View"
<< "Calendar Widget" << "LCD Number" << "Progress Bar"
<< "Horizontal Line" << "Verical Line" << "OpenGl Widget" << "QQuickWidget";
list.append(displaysList);
QList<QIcon> displays_iconList;
QStringList iconPathList;
iconPathList << ":/image/layouts.png" << ":/image/spacers.png"
<< ":/image/buttons.png" << ":/image/itemViews.png"
<< ":/image/itemWidgets.png" << ":/image/containers.png"
<< ":/image/inputWidgets.png" << ":/image/displayWidgets.png";
QSize iconSize(30,24);
for (int i=0; i<iconPathList.length(); i++) {
QImageReader reader;
reader.setFileName(iconPathList[i]);
int length = reader.size().height()/iconSize.height();
QImage image = reader.read();
for (int j=0; j< length; j++) {
QImage image_1 = image.copy(0, j*iconSize.height(), iconSize.width(), iconSize.height());
displays_iconList.append(QIcon(QPixmap::fromImage(image_1)));
}
}
for (int i=0, n=0; i<rootList.length(); i++) {
QTreeWidgetItem* item = new QTreeWidgetItem;
item->setText(0, rootList[i]);
item->setTextAlignment(0, Qt::AlignCenter);
treeWidget->addTopLevelItem(item);
if(i < list.length())
for (int j=0; j<list[i].length(); j++) {
QTreeWidgetItem* itemChild = new QTreeWidgetItem;
itemChild->setText(0, list[i][j]);
itemChild->setTextAlignment(0, Qt::AlignLeft);
if(n < displays_iconList.length()){
itemChild->setIcon(0, displays_iconList[n]);
n++;
}
item->addChild(itemChild);
}
}
treeWidget->show();
connect(treeWidget, &QTreeWidget::itemDoubleClicked, this, [=](QTreeWidgetItem *item, int column){
QString str = item->text(0);
if("Vertical Layout" == str){
if(nullptr == m_mapRightWidget["Vertical Layout"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("垂直布局");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:垂直布局
//Vertical Layout 垂直布局
QDialog* dialog = new QDialog;
dialog->resize(200,100);
dialog->setWindowTitle("垂直布局示例");
QLabel* label = new QLabel("控件1", dialog);
QLabel* label_2 = new QLabel("控件2", dialog);
QLabel* label_3 = new QLabel("控件3", dialog);
label->setStyleSheet("background-color: red;");
label_2->setStyleSheet("background-color: yellow;");
label_3->setStyleSheet("background-color: blue;");
QVBoxLayout* vbox = new QVBoxLayout(dialog);
vbox->addWidget(label);
vbox->addWidget(label_2);
vbox->addWidget(label_3);
dialog->setLayout(vbox);
dialog->exec();
dialog->deleteLater();
//key:垂直布局
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Vertical Layout"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Vertical Layout"]);
}else if("Horizontal Layout" == str){
if(nullptr == m_mapRightWidget["Horizontal Layout"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("水平布局");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:水平布局
//Horizontal Layout 水平布局
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("水平布局示例");
QLabel* label = new QLabel("控件1", dialog);
QLabel* label_2 = new QLabel("控件2", dialog);
QLabel* label_3 = new QLabel("控件3", dialog);
label->setStyleSheet("background-color: red;");
label_2->setStyleSheet("background-color: yellow;");
label_3->setStyleSheet("background-color: blue;");
QHBoxLayout* hbox = new QHBoxLayout(dialog);
hbox->addWidget(label);
hbox->addWidget(label_2);
hbox->addWidget(label_3);
dialog->setLayout(hbox);
dialog->exec();
dialog->deleteLater();
//key:水平布局
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Horizontal Layout"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Horizontal Layout"]);
}else if("Grid Layout" == str){
if(nullptr == m_mapRightWidget["Grid Layout"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("网格布局");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:网格布局
//Grid Layout 网格布局
QDialog* dialog = new QDialog;
dialog->resize(200,100);
dialog->setWindowTitle("网格布局示例");
QLabel* label = new QLabel("控件1", dialog);
QLabel* label_2 = new QLabel("控件2", dialog);
QLabel* label_3 = new QLabel("控件3", dialog);
QLabel* label_4 = new QLabel("控件4", dialog);
label->setStyleSheet("background-color: red;");
label_2->setStyleSheet("background-color: yellow;");
label_3->setStyleSheet("background-color: blue;");
label_4->setStyleSheet("background-color: black;");
QGridLayout* grid = new QGridLayout(dialog);
grid->addWidget(label, 0 ,0);
grid->addWidget(label_2, 0, 1);
grid->addWidget(label_3, 1, 0);
grid->addWidget(label_4, 1, 1);
dialog->setLayout(grid);
dialog->exec();
dialog->deleteLater();
//key:网格布局
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Grid Layout"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Grid Layout"]);
}else if("Form Layout" == str){
if(nullptr == m_mapRightWidget["Form Layout"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("表格布局示例");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:表格布局
//Grid Layout 表格布局 少添加一个Label
QDialog* dialog = new QDialog;
dialog->resize(200,100);
dialog->setWindowTitle("表格布局");
QLineEdit* line = new QLineEdit(dialog);
QLineEdit* line_1 = new QLineEdit(dialog);
QLineEdit* line_2 = new QLineEdit(dialog);
QFormLayout* layout= new QFormLayout(dialog);
layout->addRow("text:", line);
layout->addRow("text_1:", line_1);
layout->addRow("text_2:", line_2);
dialog->setLayout(layout);
dialog->exec();
dialog->deleteLater();
//key:表格布局
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Form Layout"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Form Layout"]);
}else if("Horizontal Spacer" == str){
if(nullptr == m_mapRightWidget["Horizontal Spacer"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("水平弹簧");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:水平弹簧
//Horizontal Spacer 水平弹簧
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("水平弹簧示例");
QLabel* label = new QLabel("控件1", dialog);
QLabel* label_2 = new QLabel("控件2", dialog);
QLabel* label_3 = new QLabel("控件3", dialog);
label->setStyleSheet("background-color: red;");
label_2->setStyleSheet("background-color: yellow;");
label_3->setStyleSheet("background-color: blue;");
QHBoxLayout* hbox = new QHBoxLayout(dialog);
hbox->addWidget(label);
hbox->addWidget(label_2);
hbox->addStretch();//弹簧
hbox->addWidget(label_3);
dialog->setLayout(hbox);
dialog->exec();
dialog->deleteLater();
//key:水平弹簧
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Horizontal Spacer"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Horizontal Spacer"]);
}else if("Vertical Spacer" == str){
if(nullptr == m_mapRightWidget["Vertical Spacer"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("垂直弹簧");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:垂直弹簧
//Vertical Spacer 垂直弹簧
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("垂直弹簧示例");
QLabel* label = new QLabel("控件1", dialog);
QLabel* label_2 = new QLabel("控件2", dialog);
QLabel* label_3 = new QLabel("控件3", dialog);
label->setStyleSheet("background-color: red;");
label_2->setStyleSheet("background-color: yellow;");
label_3->setStyleSheet("background-color: blue;");
QVBoxLayout* vbox = new QVBoxLayout(dialog);
vbox->addWidget(label);
vbox->addWidget(label_2);
vbox->addStretch();//弹簧
vbox->addWidget(label_3);
dialog->setLayout(vbox);
dialog->exec();
dialog->deleteLater();
//key:垂直弹簧
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Vertical Spacer"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Vertical Spacer"]);
}else if("Push Button" == str){
if(nullptr == m_mapRightWidget["Push Button"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("按钮");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:按钮
//Push Button 按钮
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("按钮示例");
QPushButton* btn = new QPushButton("按钮", dialog);
connect(btn, &QPushButton::clicked, this, [=](){
QMessageBox::information(nullptr, "按钮弹窗", "您点击了此按钮!");
});
dialog->exec();
dialog->deleteLater();
//key:按钮
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Push Button"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Push Button"]);
}else if("Tool Button" == str){
if(nullptr == m_mapRightWidget["Tool Button"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("工具按钮");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:工具按钮
//Tool Button 工具按钮
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("工具按钮示例");
QToolButton* btn = new QToolButton(dialog);
QIcon icon = QApplication::style()->standardIcon((enum QStyle::StandardPixmap)0);//系统图标
btn->setIcon(icon);
btn->setArrowType(Qt::LeftArrow);
btn->setText("Tool Button");
//btn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);// 文本位于图标之下
btn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);// 文本位于图标之右
//btn->setToolButtonStyle(Qt::ToolButtonIconOnly);// 只显示图标
connect(btn, &QPushButton::clicked, this, [=](){
QMessageBox::information(nullptr, "按钮弹窗", "您点击了此按钮!");
});
dialog->exec();
dialog->deleteLater();
//key:工具按钮
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Tool Button"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Tool Button"]);
}else if("Radio Button" == str){
if(nullptr == m_mapRightWidget["Radio Button"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("单选按钮");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:单选按钮
//Radio Button 单选按钮
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("单选按钮示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QRadioButton* radioBtn = new QRadioButton;
QRadioButton* radioBtn_1 = new QRadioButton;
vbox->addWidget(radioBtn);
vbox->addWidget(radioBtn_1);
//将两个按钮加入组后,只有一个可选,即互斥
QButtonGroup* group = new QButtonGroup(dialog);
group->addButton(radioBtn);
group->addButton(radioBtn_1);
connect(radioBtn, &QRadioButton::toggled, this, [=](bool check){
if(check)
radioBtn->setText("已选择");
else
radioBtn->setText("未选择");
});
connect(radioBtn_1, &QRadioButton::toggled, this, [=](bool check){
if(check)
radioBtn_1->setText("已选择");
else
radioBtn_1->setText("未选择");
});
dialog->exec();
dialog->deleteLater();
//key:单选按钮
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Radio Button"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Radio Button"]);
}else if("Check box" == str){
if(nullptr == m_mapRightWidget["Check box"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("多选框");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:多选框
//Check box 多选框
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("多选框示例");
QHBoxLayout* hbox = new QHBoxLayout;
dialog->setLayout(hbox);
QCheckBox* checkBox = new QCheckBox;
QCheckBox* checkBox_1 = new QCheckBox;
QCheckBox* checkBox_2 = new QCheckBox;
hbox->addWidget(checkBox);
hbox->addWidget(checkBox_1);
hbox->addWidget(checkBox_2);
connect(checkBox, &QCheckBox::toggled, this, [=](bool check){
if(check)
checkBox->setText("已选择");
else
checkBox->setText("未选择");
});
connect(checkBox_1, &QCheckBox::toggled, this, [=](bool check){
if(check)
checkBox_1->setText("已选择");
else
checkBox_1->setText("未选择");
});
connect(checkBox_2, &QCheckBox::toggled, this, [=](bool check){
if(check)
checkBox_2->setText("已选择");
else
checkBox_2->setText("未选择");
});
dialog->exec();
dialog->deleteLater();
//key:多选框
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Check box"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Check box"]);
}else if("Command Link Button" == str){
if(nullptr == m_mapRightWidget["Command Link Button"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("命令连接按钮");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:命令连接按钮
//Command Link Button 命令连接按钮
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("命令连接按钮示例");
QCommandLinkButton* btn = new QCommandLinkButton("命令连接按钮", "Command Link Button", dialog);
//btn->setText("命令连接按钮");
//btn->setDescription("Command Link Button");
//QIcon icon = QApplication::style()->standardIcon((enum QStyle::StandardPixmap)0);//系统图标
//btn->setIcon(icon);//也可设置图标
connect(btn, &QCommandLinkButton::clicked, this, [=](){
QMessageBox::information(nullptr, "按钮弹窗", "您点击了此按钮!");
});
dialog->exec();
dialog->deleteLater();
//key:命令连接按钮
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Command Link Button"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Command Link Button"]);
}else if("Dialog Button Box" == str){
if(nullptr == m_mapRightWidget["Dialog Button Box"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("对话框按钮");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:对话框按钮
//Dialog Button Box 对话框按钮
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("对话框按钮示例");
//QDialogButtonBox* box = new QDialogButtonBox(QDialogButtonBox::SaveAll
// |QDialogButtonBox::Ok,
// Qt::Horizontal,
// dialog);
QDialogButtonBox* box = new QDialogButtonBox(Qt::Horizontal,dialog);
QPushButton* btn = new QPushButton("确定");
QPushButton* btn_1 = new QPushButton("取消");
box->addButton(QDialogButtonBox::SaveAll);
box->addButton(btn, QDialogButtonBox::ActionRole);
box->addButton(btn_1, QDialogButtonBox::ActionRole);
connect(box, &QDialogButtonBox::clicked, this, [=](QAbstractButton *button){
QMessageBox::information(nullptr, "按钮弹窗", "您点击了:" + button->text());
});
dialog->exec();
dialog->deleteLater();
//key:对话框按钮
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Dialog Button Box"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Dialog Button Box"]);
}else if("List View" == str){
if(nullptr == m_mapRightWidget["List View"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("列表视图");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:列表视图
//List View 列表视图
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("列表视图示例");
QVBoxLayout* vbox = new QVBoxLayout;
QListView* listView =new QListView;
vbox->addWidget(listView);
dialog->setLayout(vbox);
QStringList strList;
for (int i=0;i<10;i++) {
strList.append(QString("listItem%1").arg(i));
}
QStandardItemModel* mode =new QStandardItemModel(listView);
int nCount = strList.size();
for(int i = 0; i < nCount; i++)
{
QString string = static_cast<QString>(strList.at(i));
QStandardItem *item = new QStandardItem(string);
item->setData(i*2, Qt::UserRole);
mode->appendRow(item);
}
listView->setModel(mode);
//点击事件
connect(listView,&QListView::pressed, this, [=](const QModelIndex &index){
if(qApp->mouseButtons() == Qt::RightButton)//右键菜单 clicked 右键点击时不会触发
{
QMenu menu;
menu.addAction(mode->itemFromIndex(index)->text());
menu.exec(QCursor::pos());
}
});
connect(listView,&QListView::doubleClicked, this, [=](const QModelIndex &index){
QStandardItem *item = mode->itemFromIndex(index);
qDebug()<<"doubleClicked data:"<< " "<<item->data(Qt::UserRole).value<int>();
QMessageBox::information(nullptr,"提示", QString("doubleClicked %1 data:%2").arg(item->text()).arg(item->data(Qt::UserRole).value<int>()));
});
listView->show();
dialog->exec();
dialog->deleteLater();
//key:列表视图
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["List View"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["List View"]);
}else if("Tree View" == str){
if(nullptr == m_mapRightWidget["Tree View"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("树视图");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:树视图
//Tree View 树视图
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("树视图示例");
QVBoxLayout* vbox = new QVBoxLayout;
QTreeView* treeView =new QTreeView;
vbox->addWidget(treeView);
dialog->setLayout(vbox);
treeView->setHeaderHidden(true);//表头隐藏
QStringList strList;
for (int i=0;i<10;i++) {
strList.append(QString("listItem%1").arg(i));
}
QStandardItemModel* mode =new QStandardItemModel(treeView);
int nCount = strList.size();
for(int i = 0; i < nCount; i++)
{
QString string = static_cast<QString>(strList.at(i));
QStandardItem *item = new QStandardItem(string);
item->setData(i*2, Qt::UserRole);
mode->setItem(i,0,item);
for(int j=0; j<2; j++){
QString string = static_cast<QString>(QString("listItemChild%1").arg(j));
QStandardItem *itemChild = new QStandardItem(string);
if(0==i){
item->setCheckable(true);//设置可选
itemChild->setCheckable(true);
}
itemChild->setData(j*2, Qt::UserRole);
mode->item(i,0)->setChild(j,0,itemChild);
}
}
treeView->setModel(mode);
connect(treeView,&QTreeView::pressed, this, [=](const QModelIndex &index){
if(qApp->mouseButtons() == Qt::RightButton)//右键菜单
{
QMenu menu;
menu.addAction(mode->itemFromIndex(index)->text());
menu.exec(QCursor::pos());
}
});
connect(treeView,&QTreeView::doubleClicked, this, [=](const QModelIndex &index){
QStandardItem *item = mode->itemFromIndex(index);
qDebug()<<"doubleClicked data:"<< " "<<item->data(Qt::UserRole).value<int>();
QMessageBox::information(nullptr,"提示", QString("doubleClicked %1 data:%2").arg(item->text()).arg(item->data(Qt::UserRole).value<int>()));
});
treeView->show();
dialog->exec();
dialog->deleteLater();
//key:树视图
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Tree View"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Tree View"]);
}else if("Table View" == str){
if(nullptr == m_mapRightWidget["Table View"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("表格视图");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:表格视图
//Table View 表格视图
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("表格视图示例");
QVBoxLayout* vbox = new QVBoxLayout;
QTableView* tableView =new QTableView;
vbox->addWidget(tableView);
dialog->setLayout(vbox);
//tableView->horizontalHeader()->setVisible(false);//隐藏表头
//tableView->verticalHeader()->setVisible(false);//隐藏序号
QStandardItemModel* mode =new QStandardItemModel(tableView);
QStringList headList;
headList<<"title1"<<"title2"<<"title3";
mode->setHorizontalHeaderLabels(headList);//表头
for(int i = 0; i < 10; i++)
{
for (int j=0; j<3; j++) {
QString string = static_cast<QString>(QString("listItem%1x%2").arg(i).arg(j));
QStandardItem *item = new QStandardItem(string);
item->setData(i*2, Qt::UserRole);
mode->setItem(i,j,item);
if(0 == i)
item->setCheckable(true);//设置选择框
}
}
tableView->setModel(mode);
connect(tableView,&QTableView::pressed, this, [=](const QModelIndex &index){
if(qApp->mouseButtons() == Qt::RightButton)//右键菜单
{
QMenu menu;
menu.addAction(mode->itemFromIndex(index)->text());
menu.exec(QCursor::pos());
}
});
connect(tableView,&QTableView::doubleClicked, this, [=](const QModelIndex &index){
QStandardItem *item = mode->itemFromIndex(index);
qDebug()<<"doubleClicked data:"<< " "<<item->data(Qt::UserRole).value<int>();
QMessageBox::information(nullptr,"提示", QString("doubleClicked %1 data:%2").arg(item->text()).arg(item->data(Qt::UserRole).value<int>()));
});
tableView->show();
dialog->exec();
dialog->deleteLater();
//key:表格视图
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Table View"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Table View"]);
}else if("Column View" == str){
if(nullptr == m_mapRightWidget["Column View"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("列模式表格视图");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:列模式表格视图
//Column View 列模式表格视图
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("列模式表格视图示例");
QVBoxLayout* vbox = new QVBoxLayout;
QColumnView* colunmView =new QColumnView;
vbox->addWidget(colunmView);
dialog->setLayout(vbox);
QStandardItemModel* mode =new QStandardItemModel(colunmView);
for(int i = 0; i < 10; i++)
{
QStandardItem *item = new QStandardItem(QString("listItem%1").arg(i));
item->setData(i*2, Qt::UserRole);
mode->appendRow(item);
for (int j=0; j<3; j++) {
QStandardItem *itemChild = new QStandardItem(QString("listItem%1*%2").arg(i).arg(j));
itemChild->setData(j*2, Qt::UserRole);
item->appendRow(itemChild);
for (int n=0; n<3; n++) {
QStandardItem *itemChild_2 = new QStandardItem(QString("listItem%1*%2*%3")
.arg(i).arg(j).arg(n));
itemChild_2->setData(j*2, Qt::UserRole);
itemChild->appendRow(itemChild_2);
}
}
}
colunmView->setModel(mode);
connect(colunmView,&QColumnView::pressed, this, [=](const QModelIndex &index){
if(qApp->mouseButtons() == Qt::RightButton)//右键菜单
{
QMenu menu;
menu.addAction(mode->itemFromIndex(index)->text());
menu.exec(QCursor::pos());
}
});
connect(colunmView,&QColumnView::doubleClicked, this, [=](const QModelIndex &index){
QStandardItem *item = mode->itemFromIndex(index);
qDebug()<<"doubleClicked data:"<< " "<<item->data(Qt::UserRole).value<int>();
QMessageBox::information(nullptr,"提示", QString("doubleClicked %1 data:%2").arg(item->text()).arg(item->data(Qt::UserRole).value<int>()));
});
colunmView->show();
dialog->exec();
dialog->deleteLater();
//key:列模式表格视图
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Column View"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Column View"]);
}else if("Undo View" == str){
if(nullptr == m_mapRightWidget["Undo View"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("撤销视图","/mainwindow.h");
widget->SetText("撤销视图");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:撤销视图
//Undo View 撤销视图
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("撤销视图示例");
QVBoxLayout* vbox = new QVBoxLayout;
QWidget* widget = new QWidget;
QWidget* widget_2 = new QWidget;
widget_2->setFixedWidth(500);
widget_2->setStyleSheet("background-color:rgb(255,255,255);");
vbox->addWidget(widget);
dialog->setLayout(vbox);
QUndoStack* m_undoStack = new QUndoStack(widget);//存放操作的栈
QUndoView* m_undoView = new QUndoView(m_undoStack);//右面显示栈内容的view(不setText就是空的)
QAction* m_undoAction = m_undoStack->createUndoAction(widget,"Undo");
m_undoAction->setShortcut(QKeySequence::Undo);
QAction* m_redoAction = m_undoStack->createRedoAction(widget,"Redo");
m_redoAction->setShortcut(QKeySequence::Redo);
widget->addAction(m_undoAction);
widget->addAction(m_redoAction);
QPushButton* m_addItemBtn = new QPushButton();
QLineEdit* m_lineEdit = new QLineEdit;
m_addItemBtn->setText("add Item");
QVBoxLayout *vLayout = new QVBoxLayout();
QHBoxLayout *pHLayout = new QHBoxLayout();
vLayout->addWidget(m_addItemBtn);
vLayout->addWidget(m_lineEdit);
vLayout->addWidget(widget_2);
pHLayout->addLayout(vLayout);
pHLayout->addWidget(m_undoView);
widget->setLayout(pHLayout);
widget->resize(500,400);
connect(m_addItemBtn,&QPushButton::clicked,this,[=](){
Mybtn* btn = new Mybtn(m_lineEdit->text(), widget_2);
btn->show();
QUndoCommand* add = new addCommand(btn);
m_undoStack->push(add);//入栈操作 会自动调用 addCommand 的 redo
connect(btn,&Mybtn::sigMove, this, [=](Mybtn* btn, QPoint pos){
m_undoStack->push(new moveCommand(btn, pos));//入栈操作
});
});
dialog->exec();
dialog->deleteLater();
//key:撤销视图
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Undo View"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Undo View"]);
}else if("List Widget" == str){
if(nullptr == m_mapRightWidget["List Widget"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("列表界面视图");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:列表界面视图
//List Widget 列表界面视图
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("列表界面视图示例");
QVBoxLayout* vbox = new QVBoxLayout;
QListWidget* listWidget = new QListWidget;
vbox->addWidget(listWidget);
dialog->setLayout(vbox);
for (int i=0; i<5; i++) {
QListWidgetItem* item = new QListWidgetItem(QString::number(i));
listWidget->insertItem(i, item);
}
for (int i=5; i<10; i++) {
QListWidgetItem* item = new QListWidgetItem;
listWidget->insertItem(i, item);
QProgressBar* bar = new QProgressBar;
bar->setRange(0,100);
bar->setValue(i*10);
bar->setAlignment(Qt::AlignCenter);
listWidget->setItemWidget(item,bar);
}
for (int i=10; i<15; i++) {
QListWidgetItem* item = new QListWidgetItem;
listWidget->insertItem(i, item);
QLineEdit* edit = new QLineEdit;
listWidget->setItemWidget(item,edit);
}
listWidget->show();
//点击事件
connect(listWidget,&QListWidget::itemPressed, this, [=](QListWidgetItem *item){
if(qApp->mouseButtons() == Qt::RightButton)//右键菜单 clicked 右键点击时不会触发
{
QMenu menu;
menu.addAction(item->text());
menu.exec(QCursor::pos());
}
});
connect(listWidget,&QListWidget::itemDoubleClicked, this, [=](QListWidgetItem *item){
QMessageBox::information(nullptr, "提示", "doubleClicked row:"+ QString::number(listWidget->row(item)));
});
dialog->exec();
dialog->deleteLater();
//key:列表界面视图
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["List Widget"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["List Widget"]);
}else if("Tree Widget" == str){
if(nullptr == m_mapRightWidget["Tree Widget"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("树界面视图");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:树界面视图
//Tree Widget 树界面视图
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("树界面视图示例");
QVBoxLayout* vbox = new QVBoxLayout;
QTreeWidget* treeWidget = new QTreeWidget;
vbox->addWidget(treeWidget);
dialog->setLayout(vbox);
treeWidget->setColumnCount(3);
treeWidget->headerItem()->setHidden(true);//隐藏表头
//点击事件
connect(treeWidget,&QTreeWidget::itemPressed, this, [=](QTreeWidgetItem *item, int column){
if(qApp->mouseButtons() == Qt::RightButton)//右键菜单 clicked 右键点击时不会触发
{
QMenu menu;
menu.addAction(item->text(column));
menu.exec(QCursor::pos());
}
});
connect(treeWidget,&QTreeWidget::itemDoubleClicked, this, [=](QTreeWidgetItem *item, int column){
QMessageBox::information(nullptr, "提示", "doubleClicked row:"+ item->text(0));
});
for (int i=0; i<5; i++) {
QTreeWidgetItem* item = new QTreeWidgetItem;
treeWidget->insertTopLevelItem(i,item);
for (int n=0; n<3; n++) {
item->setText(n, QString::number(i+n));
}
for (int j=0; j<5; j++) {
QTreeWidgetItem* itemChlid = new QTreeWidgetItem;
item->addChild(itemChlid);
for (int n=0; n<3; n++) {
itemChlid->setText(n, QString::number(j+n));
}
QProgressBar* bar = new QProgressBar;
bar->setRange(0,100);
bar->setValue(i*10);
bar->setAlignment(Qt::AlignCenter);
treeWidget->setItemWidget(itemChlid, 0, bar);
}
}
treeWidget->show();
dialog->exec();
dialog->deleteLater();
//key:树界面视图
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Tree Widget"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Tree Widget"]);
}else if("Table Widget" == str){
if(nullptr == m_mapRightWidget["Table Widget"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("表格界面视图");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:表格界面视图
//Table Widget 表格界面视图
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("表格界面视图示例");
QVBoxLayout* vbox = new QVBoxLayout;
QTableWidget* tableWidget = new QTableWidget;
vbox->addWidget(tableWidget);
dialog->setLayout(vbox);
tableWidget->setColumnCount(3);
tableWidget->horizontalHeader()->setVisible(false);//隐藏表头
tableWidget->verticalHeader()->setVisible(false);//隐藏行号
//点击事件
connect(tableWidget,&QTableWidget::itemPressed, this, [=](QTableWidgetItem *item){
if(qApp->mouseButtons() == Qt::RightButton)//右键菜单 clicked 右键点击时不会触发
{
QMenu menu;
menu.addAction(item->text());
menu.exec(QCursor::pos());
}
});
connect(tableWidget,&QTableWidget::itemDoubleClicked, this, [=](QTableWidgetItem *item){
QMessageBox::information(nullptr, "提示", "doubleClicked row:"+ item->text());
});
tableWidget->setRowCount(10);
for (int i=0; i<5; i++) {
for (int j=0; j<tableWidget->columnCount(); j++) {
QTableWidgetItem* item = new QTableWidgetItem(QString("%1*%2").arg(i).arg(j));
tableWidget->setItem(i,j,item);
}
}
for (int i=5; i<10; i++) {
for (int j=0; j<tableWidget->columnCount(); j++) {
QTableWidgetItem* item = new QTableWidgetItem(QString("%1*%2").arg(i).arg(j));
tableWidget->setItem(i,j,item);
QProgressBar* bar = new QProgressBar;
bar->setRange(0,100);
bar->setValue(i*10);
bar->setAlignment(Qt::AlignCenter);
tableWidget->setCellWidget(i,j,bar);
}
}
tableWidget->show();
dialog->exec();
dialog->deleteLater();
//key:表格界面视图
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Table Widget"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Table Widget"]);
}else if("Group Box" == str){
if(nullptr == m_mapRightWidget["Group Box"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("组框视图");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:组框视图
//Group Box 组框视图
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("组框视图示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
widget->setLayout(vbox);
for (int i=0; i<2; i++) {
QGroupBox* groupBox = new QGroupBox("组框标题"+QString::number(i));
QGridLayout* grid = new QGridLayout;
QCheckBox* checkBox = new QCheckBox("checkBox");
QCheckBox* checkBox2 = new QCheckBox("checkBox2");
QCheckBox* checkBox3 = new QCheckBox("checkBox3");
QRadioButton* radioBtn = new QRadioButton("radioBtn");
QRadioButton* radioBtn2 = new QRadioButton("radioBtn2");
QRadioButton* radioBtn3 = new QRadioButton("radioBtn3");//radio会互斥
grid->addWidget(checkBox, 0, 0);
grid->addWidget(checkBox2, 0, 1);
grid->addWidget(checkBox3, 0, 2);
grid->addWidget(radioBtn, 1, 0);
grid->addWidget(radioBtn2, 1, 1);
grid->addWidget(radioBtn3, 1, 2);
groupBox->setLayout(grid);
vbox->addWidget(groupBox);
}
vbox->addStretch();
dialog->exec();
dialog->deleteLater();
//key:组框视图
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Group Box"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Group Box"]);
}else if("Scroll Area" == str){
if(nullptr == m_mapRightWidget["Scroll Area"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("滚动视图");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:滚动视图
//Scroll Area 滚动视图
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("滚动视图示例");
QVBoxLayout* vbox = new QVBoxLayout;
QScrollArea* scroll = new QScrollArea;
vbox->addWidget(scroll);
dialog->setLayout(vbox);
QWidget* widget = new QWidget;
QVBoxLayout* vbox2 = new QVBoxLayout;
widget->setLayout(vbox2);
for (int i=0; i<30; i++) {
QLabel* label = new QLabel("label" + QString::number(i));
label->setFixedHeight(50);
vbox2->addWidget(label);
}
scroll->setWidget(widget);//这一步要在后面,即 widget添加布局控件后 再将其widget加入scroll中
dialog->exec();
dialog->deleteLater();
//key:滚动视图
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Scroll Area"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Scroll Area"]);
}else if("Tool Box" == str){
if(nullptr == m_mapRightWidget["Tool Box"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("抽屉视图");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:抽屉视图
//Tool Box 抽屉视图
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("抽屉视图示例");
QVBoxLayout* vbox = new QVBoxLayout;
QToolBox* toolBox = new QToolBox;
vbox->addWidget(toolBox);
dialog->setLayout(vbox);
for (int i=0; i<3; i++) {
QWidget* widget = new QWidget;
QVBoxLayout* layout = new QVBoxLayout(widget);
QLabel* label= new QLabel("label" + QString::number(i));
QLineEdit* lineEdit = new QLineEdit;
QCheckBox* box = new QCheckBox("box" + QString::number(i));
layout->addWidget(label);
layout->addWidget(lineEdit);
layout->addWidget(box);
toolBox->addItem(widget, "toolBtn" + QString::number(i));
}
dialog->exec();
dialog->deleteLater();
//key:抽屉视图
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Tool Box"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Tool Box"]);
}else if("Tab Widget" == str){
if(nullptr == m_mapRightWidget["Tab Widget"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("选项界面视图");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:选项界面视图
//Tab Widget 选项界面视图
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("选项界面视图示例");
QVBoxLayout* vbox = new QVBoxLayout;
QTabWidget* tabWidget = new QTabWidget;
vbox->addWidget(tabWidget);
dialog->setLayout(vbox);
for (int i=0; i<3; i++) {
tabWidget->addTab(new QWidget, "tabTitle"+QString::number(i));
}
dialog->exec();
dialog->deleteLater();
//key:选项界面视图
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Tab Widget"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Tab Widget"]);
}else if("Stacked Widget" == str){
if(nullptr == m_mapRightWidget["Stacked Widget"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("堆叠界面视图");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:堆叠界面视图
//Stacked Widget 堆叠界面视图
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("堆叠界面视图示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QPushButton* btn = new QPushButton("next");
QStackedWidget* stackWidget = new QStackedWidget;
vbox->addWidget(btn);
vbox->addWidget(stackWidget);
for (int i=0; i<3; i++) {
QLabel* label = new QLabel("stackWidget"+QString::number(i));
stackWidget->addWidget(label);
}
stackWidget->setCurrentIndex(2);
int cnt =0;
connect(btn,&QPushButton::clicked, this, [=]()mutable{
if(cnt++ > stackWidget->count())
cnt = 0;
stackWidget->setCurrentIndex(cnt);
});
dialog->exec();
dialog->deleteLater();
//key:堆叠界面视图
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Stacked Widget"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Stacked Widget"]);
}else if("Frame" == str){
if(nullptr == m_mapRightWidget["Frame"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("框架界面视图");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:框架界面视图
//Frame 框架界面视图
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("框架界面视图示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QFrame* frame = new QFrame;
frame->setFrameShape(QFrame::Box);
vbox->addWidget(frame);
dialog->exec();
dialog->deleteLater();
//key:框架界面视图
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Frame"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Frame"]);
}else if("Widget" == str){
if(nullptr == m_mapRightWidget["Widget"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("界面视图");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:界面视图
//Widget 界面视图
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("界面视图示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QWidget* widget = new QWidget;
widget->setStyleSheet("background-color: red;");
vbox->addWidget(widget);
dialog->exec();
dialog->deleteLater();
//key:界面视图
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Widget"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Widget"]);
}else if("MDI Area" == str){
if(nullptr == m_mapRightWidget["MDI Area"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("MDI多窗体组件");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:MDI多窗体组件
//MDI Area MDI多窗体组件 主要用于设计多文档界面应用程序
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("MDI多窗体组件示例");
QVBoxLayout* vbox = new QVBoxLayout;
QHBoxLayout* hbox = new QHBoxLayout;
dialog->setLayout(vbox);
QPushButton* btn = new QPushButton("Open");
QMdiArea* mdi = new QMdiArea;
mdi->setViewMode(QMdiArea::SubWindowView); //子窗口模式
//mdi->setViewMode(QMdiArea::TabbedView ); //table窗口模式
hbox->addWidget(btn);
hbox->addStretch();
vbox->addLayout(hbox);
vbox->addWidget(mdi);
QTextBrowser* textBrowser = new QTextBrowser;
textBrowser->setWindowTitle("新文件1.txt");
QMdiSubWindow *sub = mdi->addSubWindow(textBrowser);
mdi->setActiveSubWindow(sub);
connect(btn, &QPushButton::clicked, this ,[=]()mutable{
QString filePath = QFileDialog
::getOpenFileName(nullptr,"选择打开的文件","/");
QFile file(filePath);
if(file.open(QIODevice::ReadOnly))
{
QString str = file.readAll();
QTextBrowser* textBrowser = new QTextBrowser;
textBrowser->setText(str);
textBrowser->setWindowTitle(filePath);
mdi->addSubWindow(textBrowser);
textBrowser->show();
file.close();
}
});
dialog->exec();
dialog->deleteLater();
//key:MDI多窗体组件
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["MDI Area"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["MDI Area"]);
}else if("Dock Widget" == str){
if(nullptr == m_mapRightWidget["Dock Widget"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("停靠窗口");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:停靠窗口
//Dock Widget 停靠窗口
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("停靠窗口示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QMainWindow* mainWin = new QMainWindow;
vbox->addWidget(mainWin);
QMenuBar* menuBar = new QMenuBar;
QMenu* menu = new QMenu("help");
QAction* act = new QAction("about");
QAction* act_2 = new QAction("edit");
act->setCheckable(true);
act_2->setCheckable(true);
menu->addAction(act);
menu->addAction(act_2);
menuBar->addMenu(menu);
mainWin->setMenuBar(menuBar);
QDockWidget* dockWidget = new QDockWidget;
QDockWidget* dockWidget_2 = new QDockWidget;
QLabel* label = new QLabel("about");
QLineEdit* lineEdit = new QLineEdit;
dockWidget->setWidget(label);
dockWidget_2->setWidget(lineEdit);
mainWin->addDockWidget(Qt::TopDockWidgetArea, dockWidget);
mainWin->addDockWidget(Qt::TopDockWidgetArea, dockWidget_2);
dockWidget->setWindowTitle("about");
dockWidget_2->setWindowTitle("edit");
dockWidget->hide();
dockWidget_2->hide();
connect(menuBar,&QMenuBar::triggered,this,[=](QAction* act){
if(act->text() == "about"){
if(act->isChecked()){
dockWidget->raise();
dockWidget->show();
}
else
dockWidget->hide();
}else if(act->text() == "edit"){
if(act->isChecked()){
dockWidget->raise();
dockWidget_2->show();
}
else
dockWidget_2->hide();
}
});
dialog->exec();
dialog->deleteLater();
//key:停靠窗口
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Dock Widget"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Dock Widget"]);
}else if("QAxWidget" == str){
if(nullptr == m_mapRightWidget["QAxWidget"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("QAxWidget");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:QAxWidget
//QAxWidget 是一个包装ActiveX控件的QWidget 打开word
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("QAxWidget示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QHBoxLayout* hbox = new QHBoxLayout;
QPushButton* btn = new QPushButton("open");
hbox->addWidget(btn);
hbox->addStretch();
vbox->addLayout(hbox);
widget->setLayout(vbox);
QAxWidget* axWidget = new QAxWidget;
vbox->addWidget(axWidget);
connect(btn,&QPushButton::clicked,this,[=](){
QString filePath = QFileDialog::getOpenFileName(nullptr,"选择文件","/");
axWidget->setControl(filePath);
});
dialog->exec();
dialog->deleteLater();
//key:QAxWidget
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["QAxWidget"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["QAxWidget"]);
}else if("Combo Box" == str){
if(nullptr == m_mapRightWidget["Combo Box"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Combo Box");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Combo Box
//Combo Box 下拉选择框
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("下拉选择框示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QComboBox* box = new QComboBox;
vbox->addWidget(box);
for (int i=0; i<6; i++) {
box->addItem("box"+QString::number(i));
}
connect(box,&QComboBox::textActivated,this,[=](const QString str){
QMessageBox::information(nullptr,"提示","您选择了:"+str);
});
dialog->exec();
dialog->deleteLater();
//key:Combo Box
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Combo Box"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Combo Box"]);
}else if("Font Combo Box" == str){
if(nullptr == m_mapRightWidget["Font Combo Box"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Font Combo Box");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Font Combo Box
//Font Combo Box 字体选择框
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("字体选择框示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QFontComboBox* box = new QFontComboBox(this);
vbox->addWidget(box);
connect(box,&QFontComboBox::currentFontChanged,this,[=](const QFont &f){
QMessageBox::information(nullptr,"提示","您选择了:"+f.family());
});
dialog->exec();
dialog->deleteLater();
//key:Font Combo Box
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Font Combo Box"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Font Combo Box"]);
}else if("Line Edit" == str){
if(nullptr == m_mapRightWidget["Line Edit"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Line Edit");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Line Edit
//Line Edit 单行编辑框
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("单行编辑框示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QLineEdit * edit = new QLineEdit;
vbox->addWidget(edit);
edit->setPlaceholderText("灰色提示语,输入时自动清空");
QString str = edit->text();//获取输入文本
dialog->exec();
dialog->deleteLater();
//key:Line Edit
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Line Edit"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Line Edit"]);
}else if("Text Edit" == str){
if(nullptr == m_mapRightWidget["Text Edit"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Text Edit");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Text Edit
//Text Edit 多行编辑框
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("多行编辑框示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QTextEdit * edit = new QTextEdit(this);
QString str = edit->toPlainText();//获取输入文本
edit->setPlaceholderText("灰色提示语,输入时自动清空");
vbox->addWidget(edit);
dialog->exec();
dialog->deleteLater();
//key:Text Edit
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Text Edit"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Text Edit"]);
}else if("Plain Text Edit" == str){
if(nullptr == m_mapRightWidget["Plain Text Edit"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Plain Text Edit");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Plain Text Edit
//Plain Text Edit 多行编辑框 用法和Text Edit 差不多,但要多一些功能
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("多行编辑框示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QHBoxLayout* hbox= new QHBoxLayout;
QPushButton* btn = new QPushButton("放大");
QPushButton* btn_2 = new QPushButton("缩小");
hbox->addWidget(btn);
hbox->addWidget(btn_2);
hbox->addStretch();
QPlainTextEdit * edit = new QPlainTextEdit(this);
QString str = edit->toPlainText();//获取输入文本
edit->setPlaceholderText("灰色提示语,输入时自动清空");
connect(btn,&QPushButton::clicked,this,[=](){
edit->zoomOut(-10);
});
connect(btn_2,&QPushButton::clicked,this,[=](){
edit->zoomOut(10);
});
vbox->addLayout(hbox);
vbox->addWidget(edit);
dialog->exec();
dialog->deleteLater();
//key:Plain Text Edit
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Plain Text Edit"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Plain Text Edit"]);
}else if("Spin Box" == str){
if(nullptr == m_mapRightWidget["Spin Box"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Spin Box");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Spin Box
//Spin Box 轮选框
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("轮选框示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QSpinBox* spinBox = new QSpinBox(this);
spinBox->setPrefix ("¥");//设置前缀
spinBox->setSuffix("元");//设置后缀
spinBox->setValue(10000);
spinBox->setMinimum(-100);
spinBox->setMaximum(1000000);
spinBox->setSingleStep(100);
// prefix //数字显示的前缀
// suffix //数字显示的后缀
// minimum //数值范围的最小值
// maximum //数值范围的最大值
// singlestep //设置步长,即调整按钮单步改变值
// vlaue //当前显示值
// displayInegerBase //QSpinBox的特有属性,显示整数使用的进制
// decimals //QDoubleSpinBox的特有属性,显示数值小数的位数
//connect(spinBox, &QSpinBox::textChanged,this,[=](const QString & str){
// QMessageBox::information(nullptr,"提示","当前选择:"+str);
//});
vbox->addWidget(spinBox);
dialog->exec();
dialog->deleteLater();
//key:Spin Box
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Spin Box"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Spin Box"]);
}else if("Double Spin Box" == str){
if(nullptr == m_mapRightWidget["Double Spin Box"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Double Spin Box");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Double Spin Box
//Double Spin Box 双精度轮选框
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("双精度轮选框示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QDoubleSpinBox* spinBox = new QDoubleSpinBox(this);
spinBox->setPrefix ("¥");//设置前缀
spinBox->setSuffix("元");//设置后缀
spinBox->setValue(10);
spinBox->setMinimum(-10);
spinBox->setMaximum(100);
spinBox->setSingleStep(0.01);
// prefix //数字显示的前缀
// suffix //数字显示的后缀
// minimum //数值范围的最小值
// maximum //数值范围的最大值
// singlestep //设置步长,即调整按钮单步改变值
// vlaue //当前显示值
// displayInegerBase //QSpinBox的特有属性,显示整数使用的进制
// decimals //QDoubleSpinBox的特有属性,显示数值小数的位数
//connect(spinBox, &QSpinBox::textChanged,this,[=](const QString & str){
// QMessageBox::information(nullptr,"提示","当前选择:"+str);
//});
vbox->addWidget(spinBox);
dialog->exec();
dialog->deleteLater();
//key:Double Spin Box
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Double Spin Box"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Double Spin Box"]);
}else if("Time Edit" == str){
if(nullptr == m_mapRightWidget["Time Edit"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Time Edit");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Time Edit
//Time Edit 时间编辑框
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("时间编辑框示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QTimeEdit* timeEdit = new QTimeEdit(QTime::currentTime());
timeEdit->setDisplayFormat("AP:HH:MM:ss:zzz");//设置显示格式
/*
* h 显示小时(0-23)
* hh 显示两位数字的小时(00-23)
* m x显示分钟(0-59)
* mm 显示分钟(00-59)
* s 显示秒(0-59)
* ss 显示秒(00-59)
* z 显示秒(0-999)
* zzz 显示秒(000-999)
* AP 用大写字母表示上午/下午(AM/PM)
* ap 用小写字母表示上午/下午(am/pm)
*/
vbox->addWidget(timeEdit);
dialog->exec();
dialog->deleteLater();
//key:Time Edit
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Time Edit"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Time Edit"]);
}else if("Data Edit" == str){
if(nullptr == m_mapRightWidget["Data Edit"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Data Edit");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Data Edit
//Data Edit 日期编辑框
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("日期编辑框示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QDateEdit* dateEdit = new QDateEdit(QDate::currentDate());
dateEdit->setFixedWidth(200);
//dateEdit->setDisplayFormat("yyyy/MM/dd");//设置显示格式
vbox->addWidget(dateEdit);
dialog->exec();
dialog->deleteLater();
//key:Data Edit
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Data Edit"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Data Edit"]);
}else if("Data/Time Edit" == str){
if(nullptr == m_mapRightWidget["Data/Time Edit"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Data/Time Edit");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Data/Time Edit
//Data/Time Edit 日期时间编辑框
QDialog* dialog = new QDialog;
dialog->resize(200,50);
dialog->setWindowTitle("日期时间编辑框示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QDateTimeEdit* dateTimeEdit = new QDateTimeEdit(QDateTime::currentDateTime());
dateTimeEdit->setCalendarPopup(true);//弹出日期控件
vbox->addWidget(dateTimeEdit);
dialog->exec();
dialog->deleteLater();
//key:Data/Time Edit
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Data/Time Edit"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Data/Time Edit"]);
}else if("Dial" == str){
if(nullptr == m_mapRightWidget["Dial"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Dial");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Dial
//Dial 表盘框
QDialog* dialog = new QDialog;
dialog->setWindowTitle("表盘框示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QDial* dial = new QDial;
dial->setNotchTarget(10);//设置多少值一个刻度,总100
dial->setNotchesVisible(true);//设置显示刻度
dial->setWrapping(true);//设置刻度包含整个 控件
QLabel* label = new QLabel;
QTimer *timer = new QTimer(dialog);
connect(timer, &QTimer::timeout,this,[=](){
label->setText(QString("当前值:%1").arg(dial->value()));//
});
timer->start(100);
vbox->addWidget(dial);
vbox->addWidget(label);
dialog->exec();
dialog->deleteLater();
//key:Dial
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Dial"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Dial"]);
}else if("Horizontal Scroll Bar" == str){
if(nullptr == m_mapRightWidget["Horizontal Scroll Bar"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Horizontal Scroll Bar");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Horizontal Scroll Bar
//Horizontal Scroll Bar 水平滚动条
QDialog* dialog = new QDialog;
dialog->setWindowTitle("水平滚动条示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QLabel* label = new QLabel;
QScrollBar* scroBar = new QScrollBar(Qt::Horizontal,this);
scroBar->setRange(0,100);//设置范围
scroBar->setValue(50);//设置当前值
connect(scroBar, &QScrollBar::valueChanged,this,[=](int value){
label->setText("当前值:"+QString::number(value));
});
vbox->addWidget(label);
vbox->addWidget(scroBar);
dialog->exec();
dialog->deleteLater();
//key:Horizontal Scroll Bar
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Horizontal Scroll Bar"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Horizontal Scroll Bar"]);
}else if("Vertical Scroll Bar" == str){
if(nullptr == m_mapRightWidget["Vertical Scroll Bar"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Vertical Scroll Bar");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Vertical Scroll Bar
//Vertical Scroll Bar 垂直滚动条
QDialog* dialog = new QDialog;
dialog->setWindowTitle("垂直滚动条示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QLabel* label = new QLabel;
QScrollBar* scroBar = new QScrollBar(Qt::Vertical,this);
scroBar->setRange(0,100);//设置范围
scroBar->setValue(50);//设置当前值
connect(scroBar, &QScrollBar::valueChanged,this,[=](int value){
label->setText("当前值:"+QString::number(value));
});
vbox->addWidget(label);
vbox->addWidget(scroBar);
dialog->exec();
dialog->deleteLater();
//key:Vertical Scroll Bar
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Vertical Scroll Bar"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Vertical Scroll Bar"]);
}else if("Horizontal Slider" == str){
if(nullptr == m_mapRightWidget["Horizontal Slider"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Horizontal Slider");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Horizontal Slider
//Horizontal Slider 水平滑块
QDialog* dialog = new QDialog;
dialog->setWindowTitle("水平滑块示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QLabel* label = new QLabel;
QSlider* slider = new QSlider(Qt::Horizontal,this);
slider->setRange(0,100);//设置范围
slider->setValue(50);//设置当前值
connect(slider, &QSlider::valueChanged,this,[=](int value){
label->setText("当前值:"+QString::number(value));
});
vbox->addWidget(label);
vbox->addWidget(slider);
dialog->exec();
dialog->deleteLater();
//key:Horizontal Slider
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Horizontal Slider"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Horizontal Slider"]);
}else if("Vertical Slider" == str){
if(nullptr == m_mapRightWidget["Vertical Slider"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Vertical Slider");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Vertical Slider
//Vertical Slider 垂直滑块
QDialog* dialog = new QDialog;
dialog->setWindowTitle("垂直滑块示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QLabel* label = new QLabel;
QSlider* slider = new QSlider(Qt::Vertical,this);
slider->setRange(0,100);//设置范围
slider->setValue(50);//设置当前值
connect(slider, &QSlider::valueChanged,this,[=](int value){
label->setText("当前值:"+QString::number(value));
});
vbox->addWidget(label);
vbox->addWidget(slider);
dialog->exec();
dialog->deleteLater();
//key:Vertical Slider
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Vertical Slider"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Vertical Slider"]);
}else if("Key Sequence Edit" == str){
if(nullptr == m_mapRightWidget["Key Sequence Edit"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Key Sequence Edit");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Key Sequence Edit
//Key Sequence Edit 快捷键输入框
QDialog* dialog = new QDialog;
dialog->setWindowTitle("快捷键输入框示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QLabel* label = new QLabel;
QKeySequenceEdit* keyEdit = new QKeySequenceEdit(this);
connect(keyEdit,&QKeySequenceEdit::keySequenceChanged,this,[=](const QKeySequence &keySequence){
label->setText("当前输入:"+keySequence.toString());
});
vbox->addWidget(label);
vbox->addWidget(keyEdit);
dialog->exec();
dialog->deleteLater();
//key:Key Sequence Edit
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Key Sequence Edit"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Key Sequence Edit"]);
}else if("Label" == str){
if(nullptr == m_mapRightWidget["Label"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Label");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Label
//Label 文本标签
QDialog* dialog = new QDialog;
dialog->setWindowTitle("文本标签示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QLabel* label = new QLabel("label");
vbox->addWidget(label);
dialog->exec();
dialog->deleteLater();
//key:Label
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Label"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Label"]);
}else if("Text Browser" == str){
if(nullptr == m_mapRightWidget["Text Browser"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Text Browser");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Text Browser
//Text Browser 文本浏览控件
QDialog* dialog = new QDialog;
dialog->setWindowTitle("文本浏览控件示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QTextBrowser* textBrowser = new QTextBrowser;
vbox->addWidget(textBrowser);
dialog->exec();
dialog->deleteLater();
//key:Text Browser
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Text Browser"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Text Browser"]);
}else if("Graphics View" == str){
if(nullptr == m_mapRightWidget["Graphics View"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Graphics View");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Graphics View
//Graphics View 图形视图
QDialog* dialog = new QDialog;
dialog->setWindowTitle("图形视图示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QGraphicsView* grapView = new QGraphicsView;
QGraphicsScene* scene = new QGraphicsScene;
grapView->setScene(scene);
QGraphicsRectItem *m_rectItem = new QGraphicsRectItem(); // 定义一个矩形图元
QPen pen; // 定义一个画笔,设置画笔颜色和宽度
pen.setColor(QColor(0, 160, 230));
pen.setWidth(1);
m_rectItem->setRect(0, 0, 80, 80);
m_rectItem->setPen(pen);
m_rectItem->setBrush(QBrush(QColor(255, 0, 255)));
m_rectItem->setFlag(QGraphicsItem::ItemIsMovable);
scene->addItem(m_rectItem);
vbox->addWidget(grapView);
dialog->exec();
dialog->deleteLater();
//key:Graphics View
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Graphics View"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Graphics View"]);
}else if("Calendar Widget" == str){
if(nullptr == m_mapRightWidget["Calendar Widget"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Calendar Widget");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Calendar Widget
//Calendar Widget 日历小工具
QDialog* dialog = new QDialog;
dialog->setWindowTitle("日历小工具示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QLabel* label = new QLabel;
QCalendarWidget* calendar = new QCalendarWidget;
connect(calendar,&QCalendarWidget::clicked,this,[=](const QDate date){
label->setText(date.toString());
});
vbox->addWidget(label);
vbox->addWidget(calendar);
dialog->exec();
dialog->deleteLater();
//key:Calendar Widget
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Calendar Widget"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Calendar Widget"]);
}else if("LCD Number" == str){
if(nullptr == m_mapRightWidget["LCD Number"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("LCD Number");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:LCD Number
//LCD Number 液晶显示
QDialog* dialog = new QDialog;
dialog->setWindowTitle("液晶显示示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QLCDNumber* lcdNumber = new QLCDNumber(this);
lcdNumber->setDigitCount(25); // 设置能显示的位数
lcdNumber->setMode(QLCDNumber::Dec);// 设置显示的模式为十进制
lcdNumber->setSegmentStyle(QLCDNumber::Flat);// 设置显示外观
//lcdNumber->setStyleSheet("border: 1px solid green; color: green; background: silver;");// 设置样式
QTimer* timer = new QTimer;
connect(timer,&QTimer::timeout,this,[=]()mutable{
QDateTime dateTime = QDateTime::currentDateTime();// 获取系统当前时间
lcdNumber->display(dateTime.toString("yyyy-MM-dd HH:mm:ss.zzz"));// 显示的内容
});
timer->start(10);
vbox->addWidget(lcdNumber);
dialog->exec();
dialog->deleteLater();
//key:LCD Number
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["LCD Number"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["LCD Number"]);
}else if("Progress Bar" == str){
if(nullptr == m_mapRightWidget["Progress Bar"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Progress Bar");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Progress Bar
//Progress Bar 进度条
QDialog* dialog = new QDialog;
dialog->setWindowTitle("进度条示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QProgressBar* progressBar = new QProgressBar;
progressBar->setAlignment(Qt::AlignCenter);//文本显示中间
progressBar->setRange(0,100);
QTimer* timer = new QTimer;
int cnt=0;
connect(timer,&QTimer::timeout,this,[=]()mutable{
if(cnt >100)
cnt =0;
progressBar->setValue(cnt++);
});
timer->start(100);
vbox->addWidget(progressBar);
dialog->exec();
dialog->deleteLater();
//key:Progress Bar
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Progress Bar"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Progress Bar"]);
}else if("Horizontal Line" == str){
if(nullptr == m_mapRightWidget["Horizontal Line"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Horizontal Line");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Horizontal Line
//Horizontal Line 水平分割线
QDialog* dialog = new QDialog;
dialog->setWindowTitle("水平分割线示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QFrame* line = new QFrame;
line->setFrameShape(QFrame::HLine);
line->setFrameShadow(QFrame::Plain);
vbox->addWidget(line);
dialog->exec();
dialog->deleteLater();
//key:Horizontal Line
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Horizontal Line"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Horizontal Line"]);
}else if("Verical Line" == str){
if(nullptr == m_mapRightWidget["Verical Line"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("Verical Line");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:Verical Line
//Verical Line 垂直分割线
QDialog* dialog = new QDialog;
dialog->setWindowTitle("垂直分割线示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QFrame* line = new QFrame;
line->setFrameShape(QFrame::VLine);
line->setFrameShadow(QFrame::Plain);
vbox->addWidget(line);
dialog->exec();
dialog->deleteLater();
//key:Verical Line
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["Verical Line"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["Verical Line"]);
}else if("OpenGl Widget" == str){
if(nullptr == m_mapRightWidget["OpenGl Widget"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("OpenGl Widget");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:OpenGl Widget
//OpenGl Widget OpenGL图形渲染窗口部件
QDialog* dialog = new QDialog;
dialog->setWindowTitle("OpenGL图形渲染窗口部件示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QOpenGLWidget* glWidget = new QOpenGLWidget;
QLabel* label = new QLabel(glWidget);
label->setText("QOpenGLWidget_label");
label->setStyleSheet("color:rgb(255,255,255);");
vbox->addWidget(glWidget);
dialog->exec();
dialog->deleteLater();
//key:OpenGl Widget
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["OpenGl Widget"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["OpenGl Widget"]);
}else if("QQuickWidget" == str){
if(nullptr == m_mapRightWidget["QQuickWidget"])
{
RightWidget* widget = new RightWidget(this);
widget->SetText("QQuickWidget");
connect(widget,&RightWidget::ClickBtn,this,[=](){
//key:QQuickWidget
//QQuickWidget 加载Qml文件
QDialog* dialog = new QDialog;
dialog->setWindowTitle("加载Qml文件示例");
QVBoxLayout* vbox = new QVBoxLayout;
dialog->setLayout(vbox);
QQuickWidget *quickWidget = new QQuickWidget;
quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
quickWidget->setSource(QUrl("qrc:/test.qml"));
vbox->addWidget(quickWidget);
dialog->exec();
dialog->deleteLater();
//key:QQuickWidget
});
m_rightStackWidget->addWidget(widget);
m_mapRightWidget["QQuickWidget"] = widget;
}
m_rightStackWidget->setCurrentWidget(m_mapRightWidget["QQuickWidget"]);
}
});
}
void MainWindow::showEvent(QShowEvent *event)
{
static bool bShow = false;
if(!bShow)
{
bShow = true;
InitWidget();
}
}
void MainWindow::hideEvent(QHideEvent *event)
{
}