数据专栏

智能大数据搬运工,你想要的我们都有

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

「深度学习福利」大神带你进阶工程师,立即查看>>>
http://www.qter.org/portal.php?mod=view&aid=51
1、建立一个Qt控制台应用,再.pro中的第一句改成 QT += sql
2、main.cpp中: #include #include #include #include int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); qDebug() << "Available drivers:"; QStringList drivers = QSqlDatabase::drivers(); //获取现在可用的数据库驱动 foreach(QString driver, drivers) qDebug() << driver; return a.exec(); }
多媒体
2018-09-18 13:00:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
Java程序员月薪达到三万,需要技术水平达到什么程度? >>>
需求: 在网页的文本框里面填一段文字,然后就会导出一个word文档,文档中这段字是红色,小三,宋体,等等
第一步:
在卓正官网下载完整的试用程序包 http://www.zhuozhengsoft.com/dowm/
第二步:
复制jar包到lib下面,复制web.xml文件中的代码
第三步:
页面form表单
姓名:

年龄:

手机:


第四步:
设置word 文件中指定的区域(word中的书签, pageoffice 中叫数据区域)
第五步: word.jsp页面 <%@ page language="java" import="java.util.*,com.zhuozhengsoft.pageoffice.*,com.zhuozhengsoft.pageoffice.wordwriter.*" pageEncoding="UTF-8"%> <%@page import="java.awt.Color"%> <% String name = (String) request.getParameter("username"); String age = (String) request.getParameter("age"); String phoneNum = (String) request.getParameter("phoneNum"); PageOfficeCtrl poCtrl = new PageOfficeCtrl(request); //设置服务器页面 poCtrl.setServerPage(request.getContextPath() + "/poserver.zz"); //添加自定义按钮 poCtrl.addCustomToolButton("保存", "Save", 1); //设置保存页面 poCtrl.setSaveFilePage("SaveFile.jsp"); WordDocument worddoc = new WordDocument(); //数据区域赋值 DataRegion data1 = worddoc.openDataRegion("PO_name"); data1.setValue(name); //设置字体样式 Font font = data1.getFont(); //设置红色 font.setColor(Color.red); //设置加粗 font.setBold(true); //设置字体 font.setNameAscii("宋体"); //设置字体大小 font.setSize(14); //设置下划线 font.setUnderline(WdUnderline.wdUnderlineDash); DataRegion data2 = worddoc.openDataRegion("PO_age"); data2.setValue(age); DataRegion data3 = worddoc.openDataRegion("PO_phoneNum"); data3.setValue(phoneNum); poCtrl.setWriter(worddoc); //打开Word文档 poCtrl.webOpen("doc/test.doc", OpenModeType.docNormalEdit, "张佚名"); %>
<%=poCtrl.getHtmlCode("PageOfficeCtrl1")%>

最终效果
多媒体
2018-09-18 11:42:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
版本:Qt5.9.1
QML是包含于Qt Quick的描述性语言。Qt Quick可以使用QML
指定项目名字,随便起
指定编译工具
qt5.4及以上,会提示是否建立对面的界面文件,可以选择,也可以不选择。

不使用版本控制系统
创建完成之后
清空main.qml,将其改成下面: import QtQuick 2.6 import QtQuick.Window 2.2 Window { visible: true width: 640 height: 480 title: qsTr("Hello World") Rectangle{ width: parent.width/2 height: parent.height/2 color: "red" Text { id: title text: qsTr("hello world") } } // MainForm { // anchors.fill: parent // mouseArea.onClicked: { // Qt.quit(); // // console.log(qsTr('Clicked on background. Text: "' + textEdit.text + '"')) // } // } }
改进: import QtQuick 2.6 //类似#include import QtQuick.Window 2.2 Window { //注册到Qt quick的对象 visible: true width: 640 height: 480 //创建640*480的windows对象 title: qsTr("Hello World") Rectangle{ width: parent.width/2 height: parent.height/2 //widget&height是Rectangle的对象 radius: 10 //圆角矩形 color: "red" border.color: "black" //边界颜色 border.width: 5 //边界宽度 Text { //Text可以通过Rectangle对象的子对象输出文本 id: title color: "#00FF00" //绿色 text: qsTr("hello world") anchors.centerIn: parent //将文本放在Rectangle的中间 } MouseArea{ //处理鼠标事件 anchors.fill: parent //Rectangle onClicked: { //鼠标点击 Qt.quit(); //终止程序 } } } }

多媒体
2018-09-18 11:28:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
1、warning对话框

2、question对话框
3、information对话框
4、critical对话框
多媒体
2018-09-18 10:13:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
1、新建QTGUI应用,基类选择QWidget,取出创建界面
2、widget.cpp #include #include #include #include class SubWindow : public QWidget { Q_OBJECT public: SubWindow(QWidget *parent = 0) : QWidget(parent, Qt::SubWindow) { QSizeGrip *sizegrip = new QSizeGrip(this); //在限定大小的窗口区域内调整控件的大小 sizegrip->setFixedSize(sizegrip->sizeHint()); this->setLayout(new QVBoxLayout); //声明布局 this->layout()->setMargin(0); //设置空白 layout()->addWidget(new QTextEdit); sizegrip->setWindowFlags(Qt::WindowStaysOnTopHint); sizegrip->raise(); } QSize sizeHint() const { return QSize(200, 100); } };
main.cpp int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.resize(400, 300); SubWindow subWindow(&w);//声明widget为父窗口 subWindow.move(200, 180); w.show(); return a.exec(); }
效果
多媒体
2018-09-18 09:50:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
1、新建Qtgui应用,基类选择QWidget,取消创建界面
2、widget.cpp中

从当前设置的时间中获取时分秒
设置时间并显示的GUI上
方法0:
方法1:
方法2:
获取当前时间
流逝的时间
多媒体
2018-09-17 13:09:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
类似于QPushButton
1、新建Qtgui应用,基类选择QWidget,取消创建界面
2、widget.h中
widget.cpp中
多媒体
2018-09-17 12:35:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
1、新建QtGUI应用,基类选择widget,取消创建界面
2、widget.h
widget.cpp


多媒体
2018-09-17 12:02:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
1、新建一个QtGUI应用,基类选择QWidget,取消创建界面,添加资源文件
2、widget.h中 #ifndef WIDGET_H #define WIDGET_H #include #include #include class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = 0); ~Widget(); private: QButtonGroup *chk_group[2]; QCheckBox *exclusive[3]; QCheckBox *non_exclusive[3]; private slots: void chkChanged(); }; #endif // WIDGET_H
widget.cpp中 #include "widget.h" #include #include Widget::Widget(QWidget *parent) : QWidget(parent) { QString str1[3] = {"游戏", "Offices", "Develop"}; QString str2[3] = {"P&rogramming", "Q&t", "O&S"}; chk_group[0] = new QButtonGroup(this); chk_group[1] = new QButtonGroup(this); int xpos = 30; int ypos = 30; for(int i = 0; i < 3; ++i){ exclusive[i] = new QCheckBox(str1[i], this); //可以在多个项目中多选 exclusive[i]->setGeometry(xpos, ypos, 100, 30); chk_group[0]->addButton(exclusive[i]); //分组 non_exclusive[i] = new QCheckBox(str2[i], this); non_exclusive[i]->setGeometry(xpos + 120, ypos, 100, 30); chk_group[1]->addButton(exclusive[i]); connect(non_exclusive[i], SIGNAL(clicked()), this, SLOT(chkChanged())); ypos += 40; } chk_group[0]->setExclusive(false); //单选 chk_group[1]->setExclusive(true); //多选 exclusive[0]->setIcon(QIcon(":resources/browser.png")); exclusive[1]->setIcon(QIcon(":resources/calendar.png")); exclusive[2]->setIcon(QIcon(":resources/chat.png")); non_exclusive[0]->setIcon(QIcon(":resources/editor.png")); non_exclusive[1]->setIcon(QIcon(":resources/mail.png")); non_exclusive[2]->setIcon(QIcon(":resources/users.png")); } Widget::~Widget() { } void Widget::chkChanged() { for(int i = 0 ; i < 3 ; i++) { if(non_exclusive[i]->checkState()) { qDebug("checkbox %d selected ", i+1); } } }
多媒体
2018-09-17 11:31:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
1、新建QTgui,基类选择QWidget,取消创建界面,添加资源
2、widget.h #ifndef WIDGET_H #define WIDGET_H #include #include #include class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = 0); ~Widget(); QWidget *canvas; QSlider *slider; QPixmap pixmap; void paintEvent(QPaintEvent *); public slots: void setZoom(int); private: qreal zoom; qreal pixels; qreal px_width; qreal px_height; qreal mm_width; qreal mm_height; }; #endif // WIDGET_H
widget.cpp #include "widget.h" #include #include #include #include Widget::Widget(QWidget *parent) : QWidget(parent) { this->resize(621, 375); QHBoxLayout *layout = new QHBoxLayout; canvas = new QWidget; slider = new QSlider; slider->setMinimum(0); slider->setMaximum(100); slider->setValue(50); layout->addWidget(canvas); layout->addWidget(slider); setLayout(layout); if(!pixmap.load(":/resources/fish.png")) { qDebug() << "Fatal error: Unable to load image"; exit(-1); } connect(slider, SIGNAL(valueChanged(int)), SLOT(setZoom(int))); } void Widget::paintEvent(QPaintEvent *event) { Q_UNUSED(event) QPainter painter(this); painter.scale(zoom, zoom); painter.drawPixmap(0, 0, pixmap); painter.end(); } void Widget::setZoom(int new_zoom) { zoom = (qreal)(50+new_zoom) / 50; pixels = pixmap.width() * zoom; // QDesktopWidget desk; // px_width = desk.width() / pixels; // px_height = desk.height() / pixels; // mm_width = px_width * 17.9; // mm_height = px_height * 17.9; qDebug() << "Zoom: " << zoom; // qDebug() << "desk.widthMM:" << desk.widthMM(); // qDebug() << "px_width: " << px_width; // qDebug() << "px_height: " << px_height; // qDebug() << "mm_width: " << mm_width; // qDebug() << "mm_height: " << mm_height; repaint(); repaint(); } Widget::~Widget() { }
---
多媒体
2018-09-18 09:45:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
设置QStringList模型

QStandardItemModel


完整代码: #include "widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) { setupModel(); nameLabel = new QLabel(tr("Na&me:")); nameEdit = new QLineEdit(); addressLabel = new QLabel(tr("&Address:")); addressEdit = new QTextEdit(); typeLabel = new QLabel(tr("&Type:")); typeComboBox = new QComboBox(); nextButton = new QPushButton(tr("&Next")); previousButton = new QPushButton(tr("&Previous")); nameLabel->setBuddy(nameEdit); //设置伙伴关系 addressLabel->setBuddy(addressEdit); typeLabel->setBuddy(typeComboBox); QGridLayout *layout = new QGridLayout(); layout->addWidget(nameLabel, 0, 0, 1, 1); layout->addWidget(nameEdit, 0, 1, 1, 1); layout->addWidget(previousButton, 0, 2, 1, 1); layout->addWidget(addressLabel, 1, 0, 1, 1); layout->addWidget(addressEdit, 1, 1, 2, 1); layout->addWidget(nextButton, 1, 2, 1, 1); layout->addWidget(typeLabel, 3, 0, 1, 1); layout->addWidget(typeComboBox, 3, 1, 1, 1); setLayout(layout); setWindowTitle(tr("Delegate Widget Mapper")); typeComboBox->setModel(typeModel); mapper = new QDataWidgetMapper(this); mapper->setModel(model); mapper->addMapping(nameEdit, 0); mapper->addMapping(addressEdit, 1); mapper->addMapping(typeComboBox, 2, "currentIndex"); connect(previousButton, SIGNAL(clicked()), mapper, SLOT(toPrevious())); connect(nextButton, SIGNAL(clicked()), mapper, SLOT(toNext())); connect(mapper, SIGNAL(currentIndexChanged(int)), this, SLOT(updateButtons(int))); mapper->toFirst(); } void Widget::setupModel() { QStringList items; items << tr("Home") << tr("Work") << tr("Other"); typeModel = new QStringListModel(items, this); model = new QStandardItemModel(5, 3, this); QStringList names; names << "Alice" << "Bob" << "Carol" << "Donald" << "Emma"; QStringList addresses; addresses << "123 Main Street
Market Town
" << "PO Box 32
Mail Handling Service" "
Service City
" << "The Lighthouse
Remote Island
" << "47338 Park Avenue
Big City
" << "Research Station
Base Camp
Big Mountain
"; QStringList types; types << "0" << "1" << "2" << "0" << "2"; for(int row = 0; row < 5; ++row){ QStandardItem *item = new QStandardItem(names[row]); model->setItem(row, 0, item); item = new QStandardItem(addresses[row]); model->setItem(row, 1, item); item = new QStandardItem(types[row]); model->setItem(row, 2, item); } } void Widget::updateButtons(int row) { previousButton->setEnabled(row > 0); nextButton->setEnabled(row < model->rowCount() - 1); } Widget::~Widget() { }
多媒体
2018-09-18 09:21:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
QScrollBar用于显示控件上不能完全显示的区域,与Slider类似,但是QScrollBar控件可在底部或者右侧使用。可以将其移动到特定区域
1、新建QTGUI应用,基类选择QWidget,取消创建界面
2、widget.h中: #ifndef WIDGET_H #define WIDGET_H #include #include #include class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = 0); ~Widget(); private: QScrollBar *vscrollbar[3]; QScrollBar *hscrollbar[3]; QLabel *lbl[3]; private slots: void valueChanged1(int value); void valueChanged2(int value); void valueChanged3(int value); }; #endif // WIDGET_H
widget.cpp中 #include "widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) { int xpos = 10; int ypos = 50; for(int i = 0 ; i < 3 ; i++) { vscrollbar[i] = new QScrollBar(Qt::Vertical, this); vscrollbar[i]->setRange(0, 100); vscrollbar[i]->setGeometry(xpos, 30, 20, 200); lbl[i] = new QLabel(QString("%1").arg(vscrollbar[i]->value()), this); lbl[i]->setGeometry(xpos + 2, 220, 30, 30); xpos += 50; hscrollbar[i] = new QScrollBar(Qt::Horizontal, this); hscrollbar[i]->setRange(0, 100); hscrollbar[i]->setGeometry(150, ypos, 200, 20); ypos += 30; } connect(vscrollbar[0], SIGNAL(valueChanged(int)), this, SLOT(valueChanged1(int))); connect(vscrollbar[1], SIGNAL(valueChanged(int)), this, SLOT(valueChanged2(int))); connect(vscrollbar[2], SIGNAL(valueChanged(int)), this, SLOT(valueChanged3(int))); } void Widget::valueChanged1(int value) { lbl[0]->setText(QString("%1").arg(value)); hscrollbar[0]->setValue(vscrollbar[0]->value()); } void Widget::valueChanged2(int value) { lbl[1]->setText(QString("%1").arg(value)); hscrollbar[1]->setValue(vscrollbar[1]->value()); } void Widget::valueChanged3(int value) { lbl[2]->setText(QString("%1").arg(value)); hscrollbar[2]->setValue(vscrollbar[2]->value()); } Widget::~Widget() { }
多媒体
2018-09-17 17:34:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
QRadioButton多选一,QCheckBox多选多 QString str1[3] = {"NetBook", "Handset", "Tablet"}; QRadioButton *radio1[3]; QRadioButton *radio2[3]; int ypos = 30; for(int i = 0; i < 3; ++i){ radio1[i] = new QRadioButton(str1[i], this); radio1[i]->setGeometry(10, ypos, 150, 30); ypos += 40; } QString str2[3] = {"In-Vehicle", "SmartTV", "Media Phone"}; ypos = 30; for(int i = 0; i < 3; ++i){ radio2[i] = new QRadioButton(str2[i], this); if(i == 2) radio2[i]->setChecked(true); //默认选中 radio2[i]->setGeometry(180, ypos, 150, 30); ypos += 40; } //使用QButtonGroup分组实现分离 QButtonGroup *group1 = new QButtonGroup(this); QButtonGroup *group2 = new QButtonGroup(this); group1->addButton(radio1[0]); group1->addButton(radio1[1]); group1->addButton(radio1[2]); group2->addButton(radio2[0]); group2->addButton(radio2[1]); group2->addButton(radio2[2]);
多媒体
2018-09-17 17:12:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
1、新建QT GUI,取消创建界面,基类选择“QWidget”
2、构造函数中: QProgressBar *progress[4]; progress[0] = new QProgressBar(this); progress[0]->setMinimum(0); progress[0]->setMaximum(100); progress[0]->setValue(50); //设置默认值 progress[0]->setOrientation(Qt::Horizontal); //水平放置 progress[1] = new QProgressBar(this); progress[1]->setMinimum(0); progress[1]->setMaximum(100); progress[1]->setValue(70); progress[1]->setOrientation(Qt::Horizontal); progress[1]->setInvertedAppearance(true); //反转方向 progress[2] = new QProgressBar(this); progress[2]->setMinimum(0); progress[2]->setMaximum(100); progress[2]->setValue(70); progress[2]->setOrientation(Qt::Vertical); //垂直放置 progress[3] = new QProgressBar(this); progress[3]->setMinimum(0); progress[3]->setMaximum(100); progress[3]->setValue(70); progress[3]->setOrientation(Qt::Vertical); progress[3]->setInvertedAppearance(true); progress[0]->setGeometry(10,30, 300, 30); progress[1]->setGeometry(10,70, 300, 30); progress[2]->setGeometry(400,30, 30, 300); progress[3]->setGeometry(440,30, 30, 300);
多媒体
2018-09-17 16:52:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
1、新建QTGUI应用,基类选择QWidget,取消创建界面
2、QLineEdit修改与QLabel同步显示
3、不同的显示
多媒体
2018-09-17 16:24:02
「深度学习福利」大神带你进阶工程师,立即查看>>>
1、创建QT GUI应用,取消创建界面,基类选择QWidget
2、构造函数中:



多媒体
2018-09-17 15:55:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
1、新建QtGUI应用,基类选择QWidget,取消创建界面
2、头文件: #include #include
3、构造函数



------
多媒体
2018-09-17 15:37:00
「深度学习福利」大神带你进阶工程师,立即查看>>> QString ( "Frame's button %1" ).arg(i) #include "widget.h" #include #include /* QFocusFrame可以控制其他控件外的Paintable区域。例如在控件外使用 外层线。使用QFocusFrame在QPushButton控件外绘制外层线 */ Widget::Widget(QWidget *parent) : QWidget(parent) { QPushButton *btn = new QPushButton(QString("Frame's button"), this); btn->setGeometry(10, 30, 300, 40); QFocusFrame *btn_frame = new QFocusFrame(this); btn_frame->setWidget(btn); // btn_frame->setAutoFillBackground(true); connect(btn, SIGNAL(clicked()), this, SLOT(btn_click())); connect(btn, SIGNAL(pressed()), this, SLOT(btn_pressed())); connect(btn, SIGNAL(released()), this, SLOT(btn_released())); } /* Button Pressed Button Relased Button Click 单击按钮式,最先执行Pressed事件;释放按钮Relased事件 Click事件处理Pressed&Relased事件并发送信号 */ void Widget::btn_click() { qDebug("Button Click"); } void Widget::btn_pressed() { qDebug("Button Pressed"); } void Widget::btn_released() { qDebug("Button Relased"); } Widget::~Widget() { }
多媒体
2018-09-17 15:20:00
「深度学习福利」大神带你进阶工程师,立即查看>>> //显示整数 QSpinBox *spin = new QSpinBox(this); spin->setMinimum(10); spin->setMaximum(300); spin->setPrefix("$ "); spin->setValue(200); //设置默认值,必须在10-300之间,否则离10进就是10,离300进就是300 spin->setGeometry(10, 30, 100, 30); QDoubleSpinBox * doublespin = new QDoubleSpinBox(this); doublespin->setMinimum(10.0); doublespin->setMaximum(300.0); doublespin->setValue(50.5); doublespin->setSuffix(" mm"); doublespin->setGeometry(30 + 110, 30, 100, 30); //常用的信号:valueChanged(int),valueChanged(double)
多媒体
2018-09-17 15:07:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
1、新建QT GUI应用,取消创建界面,基类选择QWidget
2、
多媒体
2018-09-17 14:27:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
1、新建QT GUI应用,取消创建界面,基类选择QWidget
2、头文件:
3、构造函数中
3.1、
3.2、限制有效日期范围 #include #include #include Widget::Widget(QWidget *parent) : QWidget(parent) { QDateTimeEdit *qde1; qde1 = new QDateTimeEdit(QDate::currentDate(), this); QDateTimeEdit *qde[3]; qde[0] = new QDateTimeEdit(QDate::currentDate(), this); //限制有效日期范围:最多只能加+3年最少只能减少3年 //每一次中只能设置一次,如果连续限制年、月,那么只有日被限制了范围,年固定不变 //如果连续显示年、月、日,那么只有日被限制了范围,年,月固定不变 /* qde[0]->setMinimumDate(QDate::currentDate().addYears(-3)); qde[0]->setMaximumDate(QDate::currentDate().addYears(3)); //固定不变 qde[0]->setMinimumDate(QDate::currentDate().addMonths(-2)); qde[0]->setMaximumDate(QDate::currentDate().addMonths(2)); //上下可变2个单位 --- qde[0]->setMinimumDate(QDate::currentDate().addYears(-3)); qde[0]->setMaximumDate(QDate::currentDate().addYears(3)); //固定不变 qde[0]->setMinimumDate(QDate::currentDate().addMonths(-2)); qde[0]->setMaximumDate(QDate::currentDate().addMonths(2)); //固定不变 qde[0]->setMinimumDate(QDate::currentDate().addDays(-20)); qde[0]->setMaximumDate(QDate::currentDate().addDays(20));//上下可变20个单位 */ qde[0]->setMinimumDate(QDate::currentDate().addYears(-3)); qde[0]->setMaximumDate(QDate::currentDate().addYears(3)); qde[0]->setDisplayFormat("yyyy"); qde[0]->setGeometry(10, 90, 100, 50); qde[1] = new QDateTimeEdit(QDate::currentDate(), this); qde[1]->setMinimumDate(QDate::currentDate().addMonths(-2)); qde[1]->setMaximumDate(QDate::currentDate().addMonths(2)); qde[1]->setDisplayFormat("MM"); qde[1]->setGeometry(110, 90, 100, 50); qde[2] = new QDateTimeEdit(QDate::currentDate(), this); qde[2]->setMinimumDate(QDate::currentDate().addDays(-20)); qde[2]->setMaximumDate(QDate::currentDate().addDays(20)); qde[2]->setDisplayFormat("dd"); qde[2]->setGeometry(210, 90, 100, 50); }
多媒体
2018-09-17 14:09:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
1、新建Qtgui应用,基类选择QWidget,取消创建界面
2、头文件:
3、构造函数中:
3.0、
3.1、addxxx:
3.2、当前时间
3.3、不同的显示格式

3.4、测试当前日期是否存在
多媒体
2018-09-17 13:54:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
http://www.qter.org/portal.php?mod=view&aid=62
1、新建QT控制台应用,在.pro中添加 QT += core xml
2、xml文件: <书库> <图书 编号="1"> <书名>Qt <作者>shiming <图书 编号="2"> <书名>linux <作者>yafei

3、代码 #include #include #include int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QFile file("my.xml");//建立指向my.xml文件的QFile对象. if(!file.open(QFile::ReadOnly | QFile::Text)) //以文本方式,只读打开文件 { qDebug() << "打开失败"; return -1; } QXmlStreamReader reader; reader.setDevice(&file); //设置文件,这时会将流设置为初始状态 while(!reader.atEnd()){ //如果没有读到文档结尾,而且没有出现错误 QXmlStreamReader::TokenType type = reader.readNext(); //读取下一个记号,它返回记号的类型 //流读取器就是在一个循环中通过使用readNext()来不断读取记号,这里可以对不同的记号和不同的内容进行不同的处理,‘ //即可以在本函数中进行,也可以在其他函数或者其他类中进行。 //根据记号的类型来进行不同的输出 if(type == QXmlStreamReader::StartDocument){ //type == 2 qDebug() << reader.documentEncoding() << reader.documentVersion(); } if(type == QXmlStreamReader::StartElement){ //type == 4 qDebug() << type << "<" << reader.name() << ">"; if(reader.attributes().hasAttribute("编号")){ qDebug() << reader.attributes().value("编号"); } } if(type == QXmlStreamReader::Characters && !reader.isWhitespace()){ qDebug() << reader.text(); } if(type == QXmlStreamReader::EndElement){ //type == 5 qDebug() << ""; } } // 如果读取过程中出现错误,那么输出错误信息 if (reader.hasError()) { qDebug() << "error: " << reader.errorString(); } file.close(); return a.exec(); }

多媒体
2018-09-14 13:33:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
QFile file("my.xml");//建立指向my.xml文件的QFile对象. if(!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) // 只写方式打开,并清空以前的信息 { qDebug() << "打开失败"; return 0; } QDomDocument doc; //新建立一个QDomDocument对象,表示一个xml文档 QDomProcessingInstruction instrution; //添加处理指令 instrution = doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\""); doc.appendChild(instrution); QTextStream out(&file); doc.save(out, 4); //将文档保存到文件,4为子元素缩进字符数 file.close();
QDomDocument doc; //新建立一个QDomDocument对象,表示一个xml文档 QDomProcessingInstruction instrution; //添加处理指令 instrution = doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\""); doc.appendChild(instrution); QDomElement root = doc.createElement("书库"); doc.appendChild(root); //添加根元素
、 QDomDocument doc; //新建立一个QDomDocument对象,表示一个xml文档 QDomProcessingInstruction instrution; //添加处理指令 instrution = doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\""); doc.appendChild(instrution); QDomElement root = doc.createElement("书库"); doc.appendChild(root); //添加根元素 QDomElement book = doc.createElement("图书"); QDomAttr id = doc.createAttribute("编号"); root.appendChild(book);
doc.appendChild(instrution); QDomElement root = doc.createElement("书库"); doc.appendChild(root); //添加根元素 QDomElement book = doc.createElement("图书"); QDomAttr id = doc.createAttribute("编号"); book.setAttributeNode(id); root.appendChild(book);
QDomDocument doc; //新建立一个QDomDocument对象,表示一个xml文档 QDomProcessingInstruction instrution; //添加处理指令 instrution = doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\""); doc.appendChild(instrution); QDomElement root = doc.createElement("书库"); doc.appendChild(root); //添加根元素 QDomElement book = doc.createElement("图书"); QDomAttr id = doc.createAttribute("编号"); id.setValue("1"); book.setAttributeNode(id); root.appendChild(book);
#include #include #include /* * 使用QDomDocument在内存种生成一颗Dom树,然后调用save()函数利用QTextStream文本流将Dom树保存在了文件中, * 在生成Dom树时主要使用了createElement()等函数来生成各种节点,然后使用appendChild()将各个节点一次追加进去 */ int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QFile file("my.xml");//建立指向my.xml文件的QFile对象. if(!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) // 只写方式打开,并清空以前的信息 { qDebug() << "打开失败"; return 0; } QDomDocument doc; //新建立一个QDomDocument对象,表示一个xml文档 QDomProcessingInstruction instrution; //添加处理指令 instrution = doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\""); doc.appendChild(instrution); QDomElement root = doc.createElement("书库"); doc.appendChild(root); //添加根元素 QDomElement book = doc.createElement("图书"); QDomAttr id = doc.createAttribute("编号"); id.setValue("1"); book.setAttributeNode(id); //图书可以有自己的属性 QDomElement title = doc.createElement("书名"); QDomText text = doc.createTextNode("Qt"); title.appendChild(text); book.appendChild(title); QDomElement author = doc.createElement("作者"); text = doc.createTextNode("shiming");//文本节点 author.appendChild(text); //QT&shuiming是用来描述书名和作者的,因此是孩子 book.appendChild(author); //书名&作者是图书的孩子,他们是用来描述图书的 root.appendChild(book); //添加第2个节点 book = doc.createElement("图书"); id = doc.createAttribute("编号"); id.setValue("2"); book.setAttributeNode(id); //图书可以有自己的属性 title = doc.createElement("书名"); text = doc.createTextNode("linux"); title.appendChild(text); book.appendChild(title); author = doc.createElement("作者"); text = doc.createTextNode("yafei");//文本节点 author.appendChild(text); //QT&shuiming是用来描述书名和作者的,因此是孩子 book.appendChild(author); //书名&作者是图书的孩子,他们是用来描述图书的 root.appendChild(book); QTextStream out(&file); doc.save(out, 4); //将文档保存到文件,4为子元素缩进字符数 file.close(); return a.exec(); }
多媒体
2018-09-14 11:11:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
http://www.qter.org/portal.php?mod=view&aid=59
Dom(Document Object Model,即文档对象模型)把XML文档转换成应用程序可以遍历的树形结构,这样便可以随机访问其中的节点。它的缺点是需要将整个XML文档读入内存,消耗内存较多。
在Qt中使用QDomProcessingInstruction类来表示XML说明,元素对应QDomElement类,属性对应QDomAttr类,文本内容由QDomText类表示。所有的DOM节点,比如这里的说明、元素、属性和文本等,都使用QDomNode来表示,然后使用对应的isProcessingInstruction()、isElement()、isAttr()和isText()等函数来判断是否是该类型的元素,如果是,那么就可以使用toProcessingInstruction()、toElement()、toAttr()和toText()等函数转换为具体的节点类型。
1、新建Qt控制台应用。在.pro中添加: QT += core xml
2、更改:
my.xml Qt shiming Linux yafei
main.cpp #include #include #include #include int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QDomDocument doc; //新建立一个QDomDocument对象,表示一个xml文档 QFile file("my.xml");//建立指向my.xml文件的QFile对象. /* * 打开文件的3种方法: * 1、file("my.xml")将文件添加到build-mydom-Desktop_Qt_5_8_0_MinGW_32bit-Debug目录下 * 2、QFile file("F:/share/injector-gui2/recordshistoryrecords.xml");绝对路径 * 3、QFile file(":/recordshistoryrecords.xml");资源文件 */ if(!file.open(QIODevice::ReadOnly)) //以只读方式打开 { qDebug() << "打开失败"; return 0; } QString errorStr; int errorLine; int errorCol; //setContent是将指定的内容指定给QDomDocument解析, //第一参数可以是QByteArray或者是文件名等 if(!doc.setContent(&file, true, &errorStr, &errorLine, &errorCol)){ //将文本内容读到doc中 qDebug() << errorStr << "line: " << errorLine << "col: " << errorCol; //如果出错,则会进入这里。errorStr得到的是出错说明,errorLine和errorCol则是出错的行和列 file.close(); //打开失败原因:encoding="UTF-8"?>, ?lia两边不能有空格 return 0; } file.close(); //关闭文件 //获取doc的第一个节点,即xml说明 QDomNode firstNode = doc.firstChild(); qDebug() << firstNode.nodeName() << firstNode.nodeValue(); //输出xml说明:有引号 qDebug() << qPrintable(firstNode.nodeName()) << qPrintable(firstNode.nodeValue()); return a.exec(); }
#include #include #include #include int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QDomDocument doc; //新建立一个QDomDocument对象,表示一个xml文档 QFile file("my.xml");//建立指向my.xml文件的QFile对象. /* * 打开文件的3种方法: * 1、file("my.xml")将文件添加到build-mydom-Desktop_Qt_5_8_0_MinGW_32bit-Debug目录下 * 2、QFile file("F:/share/injector-gui2/recordshistoryrecords.xml");绝对路径 * 3、QFile file(":/recordshistoryrecords.xml");资源文件 */ if(!file.open(QIODevice::ReadOnly)) //以只读方式打开 { qDebug() << "打开失败"; return 0; } QString errorStr; int errorLine; int errorCol; //setContent是将指定的内容指定给QDomDocument解析, //第一参数可以是QByteArray或者是文件名等 if(!doc.setContent(&file, true, &errorStr, &errorLine, &errorCol)){ //将文本内容读到doc中 qDebug() << errorStr << "line: " << errorLine << "col: " << errorCol; //如果出错,则会进入这里。errorStr得到的是出错说明,errorLine和errorCol则是出错的行和列 file.close(); //打开失败原因:encoding="UTF-8"?>, ?lia两边不能有空格 return 0; } file.close(); //关闭文件 //获取doc的第一个节点,即xml说明 QDomNode firstNode = doc.firstChild(); // qDebug() << qPrintable(firstNode.nodeName()) << qPrintable(firstNode.nodeValue()); QDomElement docElem = doc.documentElement(); //library qDebug() << qPrintable(docElem.nodeName()) << qPrintable(docElem.nodeValue()); QDomNode fstNode = docElem.firstChild(); //返回根节点的第一个子节点 // qDebug() << qPrintable(fstNode.toElement().tagName()) //book, 元素标记 // << qPrintable(fstNode.toElement().attribute("id")); //01, 元素属性id的值 while(!fstNode.isNull()) //如果节点不为空, book { if (fstNode.isElement()) //如果节点是元素 { QDomElement e = fstNode.toElement(); //将其转换为元素 qDebug() << qPrintable(e.tagName()) //返回元素标记 book << qPrintable(e.attribute("id")); //返回元素id属性的值 //获取元素book的所有子节点链表 QDomNodeList list = fstNode.childNodes(); for(int i = 0; i < list.size(); ++i) //遍历该链表 { QDomNode node = list.at(i); if(node.isElement()) qDebug() << " "<< qPrintable(node.toElement().tagName()) //返回元素标记 << " "<< qPrintable(node.toElement().text()); } } fstNode = fstNode.nextSibling(); //下一个兄弟节点 } return a.exec(); }
多媒体
2018-09-14 10:19:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
1、创建QT GUI应用,基类选择"QMainWindows",在.pro中添加: QT += charts
在源文件中添加: #include
2、在构造函数中添加: QChartView *chartView = new QChartView(this);
QChartView *chartView = new QChartView(this); QChart *chart = new QChart(); chart->setTitle("简单函数曲线"); //图标的名字 chartView->setChart(chart); setCentralWidget(chartView);
QChartView *chartView = new QChartView(this); QChart *chart = new QChart(); chart->setTitle("简单函数曲线"); //图标的名字 chartView->setChart(chart); setCentralWidget(chartView); //创建曲线序列 QLineSeries *series0 = new QLineSeries(); QLineSeries *series1 = new QLineSeries(); series0->setName("sin曲线"); //自动添加折线名字 series1->setName("cos曲线"); chart->addSeries(series0); chart->addSeries(series1);
QChartView *chartView = new QChartView(this); QChart *chart = new QChart(); chart->setTitle("简单函数曲线"); //图标的名字 chartView->setChart(chart); setCentralWidget(chartView); //创建曲线序列 QLineSeries *series0 = new QLineSeries(); QLineSeries *series1 = new QLineSeries(); series0->setName("sin曲线"); //自动添加折线名字 series1->setName("cos曲线"); chart->addSeries(series0); chart->addSeries(series1); //序列添加数值 qreal t = 0, y1, y2, intv = 0.1; int cnt = 200; for(int i = 0; i < cnt; ++i){ y1 = qSin(t); series0->append(t, y1); y2=qSin(t+20); series1->append(t,y2); t+=intv; //每次角度增加 } //创建坐标 QValueAxis *axisX = new QValueAxis; axisX->setRange(0, 10);//设置坐标轴范围 axisX->setTitleText("time(secs)");//标题 axisX->setLabelFormat("%.1f"); //标签格式:每个单位保留几位小数 axisX->setTickCount(20); //主分隔个数:0到10分成20个单位 axisX->setMinorTickCount(4); //每个单位之间绘制了多少虚网线 // axisX->setGridLineVisible(false); QValueAxis *axisY = new QValueAxis; //Y 轴 axisY->setRange(-2, 2); axisY->setTitleText("value"); axisY->setLabelFormat("%.2f"); //标签格式 axisY->setTickCount(10); axisY->setMinorTickCount(4); // axisX->setGridLineVisible(false); //为序列设置坐标轴 chart->setAxisX(axisX, series0); chart->setAxisY(axisY, series0); chart->setAxisX(axisX, series1); chart->setAxisY(axisY, series1);
多媒体
2018-09-13 18:02:00
「深度学习福利」大神带你进阶工程师,立即查看>>> setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
多媒体
2018-09-13 17:01:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
QGraphicsEffect给图像元素添加模糊Blur,阴影DropShadow,着色Colorize,透明QPacity等效果。
QGraphicsEffect是所有效果类的父类。连接原图和最后输出图像的设置[比如QGraphicsView的视口]之间的渲染通道,然后实现效果。
效果是Item的,不是Scene的
1、QGraphicsBlurEffect:模糊 QPixmap pixmap(":/resources/lena.png"); QGraphicsPixmapItem *bg = m_scene.addPixmap(pixmap); //将图像画在m_scene上面 m_effect = new QGraphicsBlurEffect; //可以模糊图像图形的渲染区域。模糊效果在产生焦点失调效果时非常有用 m_effect->setBlurRadius(10); //设置模糊半径,默认模糊半径为5像素。越大越看不清楚 // m_effect->setEnabled(false); //效果开关,如果false就不起作用;默认是true bg->setGraphicsEffect(m_effect); //是QGraphicsItem的成员函数而不是scene的成员函数,将效果直接添加到条目上
2、QGraphicsColorizeEffect:颜色渲染 setScene(&m_scene); //当前QWidget窗口时继承QGraphicsView的 QPixmap pixmap(":/resources/lena.png"); QGraphicsPixmapItem *bg = m_scene.addPixmap(pixmap); //将图像画在m_scene上面 m_effect = new QGraphicsColorizeEffect; m_effect->setColor(QColor(0, 192, 192)); m_effect->setStrength(0.5); //0.0表示无效果,1.0表示完全着色,默认1.0 m_effect->setEnabled(true); bg->setGraphicsEffect(m_effect);
3、QGraphicsOpacityEffect设置透明度 setScene(&m_scene); //当前QWidget窗口时继承QGraphicsView的 QPixmap pixmap(":/resources/lena.png"); QGraphicsPixmapItem *bg = m_scene.addPixmap(pixmap); //将图像画在m_scene上面 m_effect = new QGraphicsOpacityEffect; m_effect->setOpacity(0.1); // 0.0表示完全透明[没有了],1.0表示完全不透明,默认0.7 m_effect->setEnabled(true); bg->setGraphicsEffect(m_effect);
4、QGraphicsDropShadowEffect。。。。。等待完善
多媒体
2018-09-13 16:23:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
确保下载文件完整:
Sha1sum
kali
打开Cmd,进入相应目录: e: dir sha1sum.exe kali-linux-2018.3-vm-amd64.7z type kali-linux-2018.3-vm-amd64.txt.sha1sum [此文件由: 建立一个txt文件,将验证码放入文件,然后将文件名字改掉]

多媒体
2018-09-11 19:20:00
「深度学习福利」大神带你进阶工程师,立即查看>>> #include void MyView::paintEvent(QPaintEvent * event) { qDebug("************MyView::paintEvent*****************"); // QPainter painter; //QWidget::paintEngine: Should no longer be called QPainter painter(this->viewport()); //关键这一句 QLinearGradient ling(QPointF(70, 70), QPoint( 140, 140 ) ); //从起点到终点的渐变 ling.setColorAt(0, Qt::blue); //起点到中心要显示的颜色 ling.setColorAt(1, Qt::green); ling.setSpread( QGradient::PadSpread ); //默认显示模式 QBrush brush(ling); painter.setBrush(brush); painter.drawRect(0, 0, 200, 200); painter.end(); QGraphicsView::paintEvent(event); }
多媒体
2018-09-11 11:30:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
1、main.cpp #include #include #include #include "myitem.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); QGraphicsScene scene(0, 0, 250, 250); MyItem *item = new MyItem; item->setPos(24, 24); scene.addItem(item); QGraphicsView view(&scene); view.show(); return a.exec(); }
2、myitem.h #ifndef MYITEM_H #define MYITEM_H #include #include #include #include #include class MyItem : public QGraphicsItem { public: MyItem(QGraphicsItem *parent = 0){} ~MyItem(){} QRectF boundingRect() const { return QRectF(0, 0, 200, 200); } void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) { painter->setRenderHint(QPainter::Antialiasing); painter->setBrush(Qt::blue); painter->drawRoundedRect(0, 0, 200, 200, 5, 5); } protected: void mousePressEvent(QGraphicsSceneMouseEvent *){ qDebug("Mouse button clicked"); } void mouseReleaseEvent(QGraphicsSceneMouseEvent *){ qDebug("Mouse released clicked"); } void mouseMoveEvent(QGraphicsSceneMouseEvent *){ qDebug("Mouse move"); } void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *){ qDebug("Mouse double clicked"); } }; #endif // MYITEM_H
多媒体
2018-09-17 10:09:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
1、新建Qt GUI应用,基类QMainWindows,取消创建界面
2、项目名称上选择“添加新文件”--->"C++类"-->基类“QObject”,类名"Butterfly"
3、butterfly.h #ifndef BUTTERFLY_H #define BUTTERFLY_H #include #include #include #include #include class Butterfly : public QObject,public QGraphicsItem { Q_OBJECT public: explicit Butterfly(QObject *parent = nullptr); void timerEvent(QTimerEvent *); QRectF boundingRect() const; signals: public slots: protected: void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); private: bool up; QPixmap pix_up; //用于表示两幅蝴蝶的图片 QPixmap pix_down; qreal angle; }; #endif // BUTTERFLY_H
butterfly.cpp #include "butterfly.h" #include const static double PI=3.1416; Butterfly::Butterfly(QObject *parent) : QObject(parent) { up = true; pix_up.load("F:\\MyCode\\Butterfly\
多媒体
2018-09-17 09:42:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
./ffmpeg -i rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov -fflags flush_packets -max_delay 1 -an -flags -global_header -hls_time 1 -hls_list_size 3 -hls_flags delete_segments+omit_endlist -vcodec copy -y /Users/yizhichao/05.soft/ffmpeg4.0.2static/bin/hls/channel101.m3u8

多媒体
2018-09-15 23:53:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
1、创建一个基于QWidget的应用,基类选择QWidget,类名Mindows


给combox添加可编辑属性

实现选择目录功能:
window.h中: #ifndef WINDOW_H #define WINDOW_H #include QT_BEGIN_NAMESPACE class QComboBox; QT_END_NAMESPACE class Window : public QWidget { Q_OBJECT public: Window(QWidget *parent = 0); ~Window(); private slots: void browse(); private: QComboBox *createComboBox(const QString &text = QString()); QComboBox *directoryComboBox; }; #endif // WINDOW_H
main.cpp中 #include "window.h" #include void Window::browse() { QString directory = QDir::toNativeSeparators(QFileDialog::getExistingDirectory( this, tr("find files"), QDir::currentPath())); if (!directory.isEmpty()) { if (directoryComboBox->findText(directory) == -1) directoryComboBox->addItem(directory); directoryComboBox->setCurrentIndex(directoryComboBox->findText(directory)); } } QComboBox *Window::createComboBox(const QString &text) { QComboBox *comboBox = new QComboBox; comboBox->addItem(text); comboBox->setEditable(true); comboBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); return comboBox; } Window::Window(QWidget *parent) : QWidget(parent) { QPushButton *browseButton = new QPushButton(tr("&Browse..."), this); connect(browseButton, &QAbstractButton::clicked, this, &Window::browse); directoryComboBox = createComboBox(QDir::toNativeSeparators(QDir::currentPath())); QGridLayout *mainLayout = new QGridLayout(this); mainLayout->addWidget(new QLabel(tr("In directory:")), 2, 0); mainLayout->addWidget(directoryComboBox, 2, 1); mainLayout->addWidget(browseButton, 2, 2); setWindowTitle(tr("Find Files")); const QRect screenGeometry = QApplication::desktop()->screenGeometry(this); resize(screenGeometry.width() / 4, screenGeometry.height() / 6); } Window::~Window() { }
多媒体
2018-09-15 15:30:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
https://blog.csdn.net/a379039233/article/details/49660919 #include #include #include #include #include int main(int argc, char *argv[]) { QApplication a(argc, argv); QSplitter splitter; QTreeWidget *treeWidget = new QTreeWidget; treeWidget->setHeaderLabel(QString("计算机")); QTreeWidgetItem *treeItem1 = new QTreeWidgetItem(treeWidget, QStringList(QString("本地磁盘C"))); QTreeWidgetItem *treeItem1_1 = new QTreeWidgetItem(treeItem1, QStringList(QString("文件夹1"))); treeItem1->addChild(treeItem1_1); //添加子节点 treeItem1->setCheckState(0, Qt::Unchecked); //设置复选框:默认不选择,Checked默认选中 QTreeWidgetItem *treeItem2 = new QTreeWidgetItem(treeWidget, QStringList(QString("本地磁盘D"))); QTreeWidgetItem *treeItem2_1 = new QTreeWidgetItem(treeItem2, QStringList(QString("文件夹2"))); QTreeWidgetItem *treeItem2_2 = new QTreeWidgetItem(treeItem2, QStringList(QString("文件夹3"))); treeItem2->addChild(treeItem2_1); //添加子节点 treeItem2->addChild(treeItem2_2); //添加子节点 splitter.addWidget(treeWidget); splitter.show(); return a.exec(); }
多媒体
2018-09-14 18:12:00
「深度学习福利」大神带你进阶工程师,立即查看>>> #include "widget.h" #include #include #include #include int main(int argc, char *argv[]) { QApplication a(argc, argv); QSplitter splitter; QListWidget *left = new QListWidget(); //不能使用tr,缺少必要的设置,不知道这个设置时什么 QStringList strList{ QString("项目0"), QString("项目1"), QString("项目2"), QString("项目3"), QString("项目6")}; //或者使用<<初始化 left->addItems(strList); left->setSelectionMode(QAbstractItemView::ContiguousSelection); // //QAbstractItemView::ExtendedSelection: 按住ctrl多选 //QAbstractItemView::SingleSelection: 单选, 默认 //QAbstractItemView::MultiSelection:点击多选 //ContiguousSelection 鼠标拖拉多选 splitter.addWidget(left); splitter.show(); return a.exec(); }
多媒体
2018-09-14 17:25:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
1、新建一个QtGUI应用,创建一个Widget窗口,但是这个Widget窗口时继承自QListWidget的。
widget.h文件中 class Widget : public QListWidget { Q_OBJECT public: Widget(QWidget *parent = 0); ~Widget(); };
widget.cpp中
2.1、项目自动排序 Widget::Widget(QWidget *parent) : QListWidget(parent) { QStringList strList{tr("项目4"), tr("项目0"), tr("项目2"), tr("项目1")}; this->setSortingEnabled(true); //项目自动排序,默认从小到大 this->addItems(strList); }
Widget::Widget(QWidget *parent) : QListWidget(parent) { QStringList strList{tr("项目4"), tr("项目0"), tr("项目2"), tr("项目1")}; this->addItems(strList); this->sortItems(Qt::AscendingOrder); //默认:增长 }
Widget::Widget(QWidget *parent) : QListWidget(parent) { QStringList strList{tr("项目4"), tr("项目0"), tr("项目2"), tr("项目1")}; this->addItems(strList); this->sortItems(Qt::DescendingOrder); }
2.2、选择一个项目 Widget::Widget(QWidget *parent) : QListWidget(parent) { QStringList strList{tr("项目4"), tr("项目0"), tr("项目2"), tr("项目1")}; this->addItems(strList); this->setCurrentRow(2); }
2.3设置窗口为透明窗口 Widget::Widget(QWidget *parent) : QListWidget(parent) { QStringList strList{tr("项目4"), tr("项目0"), tr("项目2"), tr("项目1")}; this->addItems(strList); this->setWindowOpacity(0.5); }
Widget::Widget(QWidget *parent) : QListWidget(parent) { QStringList strList{tr("项目4"), tr("项目0"), tr("项目2"), tr("项目1")}; this->addItems(strList); this->setStyleSheet("background-color:transparent"); //窗口全黑 }
喵喵喵,窗口变黑了?
构造函数只能在程序初始化的时候执行一次
多媒体
2018-09-14 17:11:00
「深度学习福利」大神带你进阶工程师,立即查看>>> #include "widget.h" #include #include #include #include int main(int argc, char *argv[]) { QApplication a(argc, argv); QSplitter splitter; //使用QStringList做内部模型,批量添加 QListWidget *left = new QListWidget(); //不能使用tr,缺少必要的设置,不知道这个设置时什么 QStringList strList{ QString("项目0"), QString("项目3"), QString("项目2"), QString("项目1"), QString("项目6")}; //或者使用<<初始化 // strList << QString("第2行") << QString("第3行") << QString("第4行"); left->addItems(strList); left->sortItems(); //项目从小到大排序 //使用QListWidgetItem做内部模型,逐个添加 QListWidget *right = new QListWidget(); for(int i = 5; i > 0; --i){ QListWidgetItem *item = new QListWidgetItem; item->setData(Qt::DisplayRole, i); right->addItem(item); } right->sortItems(); QListWidget *Mid = new QListWidget(); for(int i = 0; i < 5; ++i){ QListWidgetItem *item = new QListWidgetItem; QString strText = QString::asprintf("项目%d", i); item->setText(strText); Mid->addItem(item); } splitter.addWidget(left); splitter.addWidget(right); splitter.addWidget(Mid); splitter.show(); return a.exec(); }
https://www.cnblogs.com/findumars/p/4060251.html
多媒体
2018-09-14 17:06:00
「深度学习福利」大神带你进阶工程师,立即查看>>>
http://blog.sina.com.cn/s/blog_a6fb6cc90101i19x.html
多媒体
2018-09-14 16:33:00
「深度学习福利」大神带你进阶工程师,立即查看>>> QString filePath = tr("F:\\MyCode\\QListWidget\\resourece"); QListWidget *listWidget_File = new QListWidget(this); listWidget_File->setObjectName(QString::fromUtf8("listWidget_File")); listWidget_File->setGeometry(QRect(0, 0, 0, 0)); listWidget_File->clear(); //保证每次进入listWidget_File的时候都会是空的 QDirIterator m_DirIterator(filePath, QDir::Files | QDir::NoSymLinks, QDirIterator::Subdirectories); while(m_DirIterator.hasNext()){ QString tempFile = m_DirIterator.next(); listWidget_File->setIconSize(QSize(100, 100)); //设置QListWidget中的单元项的图片大小 listWidget_File->setResizeMode(QListView::Adjust); listWidget_File->setViewMode(QListView::IconMode); //设置QListWidget的显示模式 listWidget_File->setMovement(QListView::Static); //设置QListWidget中的单元项不可被拖动 listWidget_File->setSpacing(10); //设置QListWidget中的单元项的间距 QPixmap objPixmap(tempFile); //生成图像objPixmap //tempfile当中的/media/sd/PICTURES字符串删去,并返回剩余部分 tempFile=tempFile.remove(filePath, Qt::CaseSensitive); //生成QListWidgetItem对象 QListWidgetItem *pItem = new QListWidgetItem(QIcon(objPixmap.scaled(QSize(100,100))),tempFile); pItem->setSizeHint(QSize(100,120)); //设置单元项的宽度和高度 listWidget_File->addItem(pItem); //添加QListWidgetItem项 } listWidget_File->setGeometry(NULL, NULL, 1024, 400);
https://blog.csdn.net/jimmyzj123456/article/details/9283909
多媒体
2018-09-14 15:46:00