mirror of
https://github.com/crystalidea/qt6windows7.git
synced 2025-07-04 08:15:30 +08:00
qt 6.5.1 original
This commit is contained in:
32
tests/manual/qtexttableborders/CMakeLists.txt
Normal file
32
tests/manual/qtexttableborders/CMakeLists.txt
Normal file
@ -0,0 +1,32 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## qtexttableborders Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_manual_test(qtexttableborders
|
||||
GUI
|
||||
SOURCES
|
||||
main.cpp
|
||||
widget.cpp widget.h widget.ui
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::PrintSupport
|
||||
Qt::Widgets
|
||||
ENABLE_AUTOGEN_TOOLS
|
||||
uic
|
||||
)
|
||||
|
||||
# Resources:
|
||||
set(resources_resource_files
|
||||
"table-border-test-header.html"
|
||||
"table-border-test.html"
|
||||
)
|
||||
|
||||
qt_internal_add_resource(qtexttableborders "resources"
|
||||
PREFIX
|
||||
"/"
|
||||
FILES
|
||||
${resources_resource_files}
|
||||
)
|
14
tests/manual/qtexttableborders/main.cpp
Normal file
14
tests/manual/qtexttableborders/main.cpp
Normal file
@ -0,0 +1,14 @@
|
||||
// Copyright (C) 2019 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include "widget.h"
|
||||
#include <QApplication>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication a(argc, argv);
|
||||
Widget w;
|
||||
w.show();
|
||||
|
||||
return a.exec();
|
||||
}
|
9
tests/manual/qtexttableborders/qtexttableborders.pro
Normal file
9
tests/manual/qtexttableborders/qtexttableborders.pro
Normal file
@ -0,0 +1,9 @@
|
||||
#This project can be used to verify QTBUG-36152 case.
|
||||
QT += core gui printsupport widgets
|
||||
CONFIG += c++11
|
||||
TARGET = qtexttableborders
|
||||
TEMPLATE = app
|
||||
SOURCES += main.cpp widget.cpp
|
||||
HEADERS += widget.h
|
||||
FORMS += widget.ui
|
||||
RESOURCES += resources.qrc
|
6
tests/manual/qtexttableborders/resources.qrc
Normal file
6
tests/manual/qtexttableborders/resources.qrc
Normal file
@ -0,0 +1,6 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>table-border-test-header.html</file>
|
||||
<file>table-border-test.html</file>
|
||||
</qresource>
|
||||
</RCC>
|
129
tests/manual/qtexttableborders/table-border-test-header.html
Normal file
129
tests/manual/qtexttableborders/table-border-test-header.html
Normal file
@ -0,0 +1,129 @@
|
||||
<html>
|
||||
<body>
|
||||
|
||||
<h2>Printable table with repeated header</h2>
|
||||
|
||||
<p>
|
||||
Please print (to PDF, save the trees) this table and compare this to the
|
||||
print results of Chrome/Firefox.
|
||||
<ul>
|
||||
<li>Firefox fails to render the first repeated header correctly
|
||||
<li>Chrome fails to render the Cell B top edge (should be red, except the first row after header
|
||||
<li>Qt: Could do slightly better with the last row on each page (although both Firefox and Chrome don't work perfect here as well)
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
<table border=1 bordercolor="#aaaaaa" style="border-collapse:collapse">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="border-bottom: 1px solid blue">Header A</th>
|
||||
<th style="border-bottom: 4px solid blue">Header B</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
<tr><td>Cell A</td><td style="border-top: 1px solid red">Cell B</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
171
tests/manual/qtexttableborders/table-border-test.html
Normal file
171
tests/manual/qtexttableborders/table-border-test.html
Normal file
@ -0,0 +1,171 @@
|
||||
<html>
|
||||
<body>
|
||||
|
||||
<h1>Working Test Cases</h1>
|
||||
|
||||
<h2>border-collapse: separate</h2>
|
||||
|
||||
<h3>TC-A1: table no border</h3>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell 1A</td>
|
||||
<td>Cell 1B</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>TC-A2: table attribute controlled border (1px, red)</h3>
|
||||
<table border=1 bordercolor="red">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell 1A</td>
|
||||
<td>Cell 1B</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>TC-A3: table attribute controlled border (4px, blue)</h3>
|
||||
<table border=4 bordercolor="blue">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell 1A</td>
|
||||
<td>Cell 1B</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
Note: Real browsers render the inner cells border with 1px, but QTextDocument's rendering has always been like this.
|
||||
|
||||
<h2>border-collapse: collapse</h2>
|
||||
|
||||
<h3>TC-B1: table no border</h3>
|
||||
<table style="border-collapse: collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell 1A</td>
|
||||
<td>Cell 1B</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>TC-B2: table attribute + css controlled grid (outer border 1px)</h3>
|
||||
<table border=1 bordercolor="red" style="border-collapse: collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell 1A</td>
|
||||
<td>Cell 1B</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>TC-B3: table attribute + css controlled grid (outer border 4px)</h3>
|
||||
<table border=4 bordercolor="red" style="border-collapse: collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell 1A</td>
|
||||
<td>Cell 1B</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>TC-B4: table attribute + css controlled grid (one cell with custom edge)</h3>
|
||||
<table border=4 bordercolor="red" style="border-collapse: collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell 1A</td>
|
||||
<td style="border-right: 8px solid green">Cell 1B (border-right: 8px solid green)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>TC-B5: table with single decorated cell</h3>
|
||||
<table style="border-collapse: collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell 1A</td>
|
||||
<td style="border: 2px solid red">Cell 1B (border: 2px solid red)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>cells with competing rules</h3>
|
||||
|
||||
<h4>TC-C1: vertical edge (pink, 6px) wins over horizontal edge (red|blue, 6px)</h4>
|
||||
<table border=1 bordercolor="#999999" style="border-collapse: collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="border-right: 4px solid green; border-bottom: 6px solid red">Cell 1A</td>
|
||||
<td style="border-left: 6px solid pink; border-bottom: 6px solid blue">Cell 2B</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h4>TC-C2: vertical edge (pink, 6px) loses over horizontal edge (red|blue, 8px)</h4>
|
||||
<table border=1 bordercolor="#999999" style="border-collapse: collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="border-right: 4px solid green; border-bottom: 8px solid red">Cell 1A</td>
|
||||
<td style="border-left: 6px solid pink; border-bottom: 8px solid blue">Cell 2B</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h4>TC-C3: cells with span and competing rules</h4>
|
||||
<table border=1 bordercolor="#999999" style="border-collapse: collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan=2 style="border-bottom: 4px solid red">Cell 1A/B spans over two columns (border-bottom: red)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="border-top: 1px solid green">Cell 2A (border-top loses -> red)</td>
|
||||
<td style="border-top: 10px solid green">Cell 2B (border-top wins -> green)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h1>Non-Working Test Cases</h1>
|
||||
|
||||
<h2>border-collapse: separate</h2>
|
||||
|
||||
<h3>TC-X1: table css border (red via style)</h3>
|
||||
<table style="border: 1px solid red">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell 1A</td>
|
||||
<td>Cell 1B</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2>border-collapse: collapse</h2>
|
||||
|
||||
<h3>TC-X2: tr css border</h3>
|
||||
<table border=1 style="border-collapse: collapse">
|
||||
<tbody>
|
||||
<tr style="border-bottom: 2px solid red">
|
||||
<td>Cell 1A (border-bottom should be red)</td>
|
||||
<td>Cell 1B (border-bottom should be red)</td>
|
||||
</tr>
|
||||
<tr style="border-left: 2px solid red">
|
||||
<td>Cell 2A (border-left should be red)</td>
|
||||
<td>Cell 2B</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>TC-X3: cells with competing rules and colspan</h3>
|
||||
<table border=1 bordercolor="#999999" style="border-collapse: collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan=2 style="border-bottom: 4px solid red; border-right: 15px solid pink">Cell 1A/B spans over two columns (border-bottom: red, border-right pink)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="border-top: 1px solid green">Cell 2A (border-top loses -> red)</td>
|
||||
<td style="border-top: 10px solid green">Cell 2B (border-top wins -> green)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
This is currently not 100% correct but admittedly a constructed corner case (and Chrome failes here, too).
|
||||
|
||||
</body>
|
||||
</html>
|
100
tests/manual/qtexttableborders/widget.cpp
Normal file
100
tests/manual/qtexttableborders/widget.cpp
Normal file
@ -0,0 +1,100 @@
|
||||
// Copyright (C) 2019 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include "widget.h"
|
||||
#include "ui_widget.h"
|
||||
|
||||
#include <QScrollBar>
|
||||
#include <QFile>
|
||||
#include <QDir>
|
||||
#include <QTemporaryFile>
|
||||
|
||||
#ifndef QT_NO_DESKTOPSERVICES
|
||||
#include <QDesktopServices>
|
||||
#endif
|
||||
|
||||
#ifndef QT_NO_PRINTER
|
||||
#include <QPrinter>
|
||||
#include <QPrintDialog>
|
||||
#include <QPrintPreviewDialog>
|
||||
#endif
|
||||
|
||||
// This manual test allows checking the QTextTable border logic (QTBUG-36152)
|
||||
|
||||
Widget::Widget(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::Widget)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
resize(1400, 800);
|
||||
|
||||
connect(ui->docComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &Widget::onDocumentSelected);
|
||||
connect(ui->printButton, &QPushButton::clicked, this, &Widget::onPrint);
|
||||
connect(ui->previewButton, &QPushButton::clicked, this, &Widget::onPreview);
|
||||
connect(ui->openBrowserButton, &QPushButton::clicked, this, &Widget::onOpenBrowser);
|
||||
|
||||
connect(ui->sourceEdit, &QTextEdit::textChanged, this,
|
||||
[this]() {
|
||||
// make this a world class HTML IDE
|
||||
auto pos = ui->htmlEdit->verticalScrollBar()->value();
|
||||
ui->htmlEdit->setHtml(ui->sourceEdit->toPlainText());
|
||||
ui->htmlEdit->verticalScrollBar()->setValue(pos);
|
||||
});
|
||||
|
||||
ui->docComboBox->addItem(tr("Table Border Test"), ":/table-border-test.html");
|
||||
ui->docComboBox->addItem(tr("Table Border Header Test"), ":/table-border-test-header.html");
|
||||
|
||||
ui->docComboBox->setCurrentIndex(0);
|
||||
}
|
||||
|
||||
Widget::~Widget()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void Widget::onDocumentSelected()
|
||||
{
|
||||
QString url = ui->docComboBox->itemData(ui->docComboBox->currentIndex()).toString();
|
||||
QFile f(url);
|
||||
if (f.open(QFile::ReadOnly)) {
|
||||
ui->sourceEdit->setPlainText(QString::fromUtf8(f.readAll()));
|
||||
// preview HTML is set via textChanged signal
|
||||
}
|
||||
}
|
||||
|
||||
void Widget::onPrint()
|
||||
{
|
||||
#ifndef QT_NO_PRINTER
|
||||
QPrinter printer(QPrinter::HighResolution);
|
||||
QPrintDialog dlg(&printer, this);
|
||||
if (ui->htmlEdit->textCursor().hasSelection())
|
||||
dlg.setOption(QAbstractPrintDialog::PrintSelection, true);
|
||||
dlg.setWindowTitle(tr("Print Document"));
|
||||
if (dlg.exec() == QDialog::Accepted) {
|
||||
ui->htmlEdit->print(&printer);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void Widget::onPreview()
|
||||
{
|
||||
#ifndef QT_NO_PRINTER
|
||||
QPrinter printer(QPrinter::HighResolution);
|
||||
QPrintPreviewDialog preview(&printer, this);
|
||||
connect(&preview, &QPrintPreviewDialog::paintRequested, ui->htmlEdit, &QTextEdit::print);
|
||||
preview.exec();
|
||||
#endif
|
||||
}
|
||||
|
||||
void Widget::onOpenBrowser()
|
||||
{
|
||||
// write the current html to a temp file and open the system browser
|
||||
#ifndef QT_NO_DESKTOPSERVICES
|
||||
auto tf = new QTemporaryFile(QDir::tempPath() + "/XXXXXX.html", this);
|
||||
if (tf->open()) {
|
||||
tf->write(ui->sourceEdit->toPlainText().toUtf8());
|
||||
tf->close();
|
||||
QDesktopServices::openUrl(QUrl::fromLocalFile(tf->fileName()));
|
||||
}
|
||||
#endif
|
||||
}
|
31
tests/manual/qtexttableborders/widget.h
Normal file
31
tests/manual/qtexttableborders/widget.h
Normal file
@ -0,0 +1,31 @@
|
||||
// Copyright (C) 2019 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#ifndef WIDGET_H
|
||||
#define WIDGET_H
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
namespace Ui {
|
||||
class Widget;
|
||||
}
|
||||
|
||||
class Widget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit Widget(QWidget *parent = nullptr);
|
||||
~Widget();
|
||||
|
||||
private slots:
|
||||
void onDocumentSelected();
|
||||
void onPrint();
|
||||
void onPreview();
|
||||
void onOpenBrowser();
|
||||
|
||||
private:
|
||||
Ui::Widget *ui;
|
||||
};
|
||||
|
||||
#endif // WIDGET_H
|
79
tests/manual/qtexttableborders/widget.ui
Normal file
79
tests/manual/qtexttableborders/widget.ui
Normal file
@ -0,0 +1,79 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Widget</class>
|
||||
<widget class="QWidget" name="Widget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>606</width>
|
||||
<height>522</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>QTextTable Border Manual Test</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QComboBox" name="docComboBox">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="printButton">
|
||||
<property name="text">
|
||||
<string>Print</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="previewButton">
|
||||
<property name="text">
|
||||
<string>Preview</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="openBrowserButton">
|
||||
<property name="text">
|
||||
<string>Open Browser</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSplitter" name="splitter">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<widget class="QTextEdit" name="htmlEdit"/>
|
||||
<widget class="QTextEdit" name="sourceEdit"/>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<tabstops>
|
||||
<tabstop>docComboBox</tabstop>
|
||||
<tabstop>printButton</tabstop>
|
||||
<tabstop>previewButton</tabstop>
|
||||
<tabstop>openBrowserButton</tabstop>
|
||||
<tabstop>htmlEdit</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
Reference in New Issue
Block a user