Просмотр сообщений
|
Страниц: 1 [2] 3 4 ... 21
|
16
|
Qt / Вопросы новичков / Как в QVBoxLayout скрыть виджет, не меняя разтяжения остальных виджетов?
|
: Июль 24, 2020, 10:34
|
Здравствуйте, господа форумчане.
У меня есть окно с тремя кнопками. Всем кнопкам задано свойство sizePolicy и minimumSize, как показано на рисунке 1. Кнопки лежат в QVBoxLayout. Для которого заданы свойства, смотрите рисунок 2.
В результате окно имеет вид, рисунок 3 а). Когда я скрываю первую кнопку, с помощью метода setHidden(), остальные две кнопки растягиваются по вертикали (рисунок 3 б)).
Как сделать так, чтобы место первой кнопки оставалось не затронутым, и две остальные кнопки не растягивались (рисунок 4).
Если использовать QGridLayout, то когда скрываются все виджеты в столбце или строке, место где, лежат виджеты уменьшается на 1 пиксель по строке или столбцу, и этот пиксель добавляется к одному из столбцов или строк лежащих в этой же компановке. Как избавится от этого тоже не нашел пока.
|
|
|
17
|
Qt / Вопросы новичков / Re: Почему когда окно теряет фокус, в QProgressBar меняется цвет полосы процентов?
|
: Март 30, 2020, 10:08
|
Ну так и меняйте. Хоть системным стилем, хоть стилем самого прогрессбара. Общего решения я там и не нашёл в подобном случае. Там, правда, был стиль в QTextEdit, но принцип тот же самый. P.S. есть ещё обходной спопоб: описываете 100500 стилей в ресурсах своего приложения, а меню просто даёте пользователю выбрать тот, который ему нравится.
Ясно. будем значит менять стиль.
|
|
|
19
|
Qt / Вопросы новичков / Почему когда окно теряет фокус, в QProgressBar меняется цвет полосы процентов?
|
: Март 27, 2020, 15:43
|
Здравствуйте, господа форумчане.
Недавно заметил, что у меня в приложении, полоса процентов в QProgressBar меняет свой цвет, когда окно теряет фокус (стает неактивным). В активном окне данная полоса процентов синяя, а в неактивном окне - белая. Для приложения использую стиль "Fusion". Заметил что при стиле "WindowsXP" ее цвет постоянно зеленый (ниже прикреплю рисунок).
Можно ли как-то добиться, чтобы при стиле "Fusion", цвет полосы процентов при активнем и неактивном окне был синим? Или же нужно менять стиль для QProgressBar?
|
|
|
21
|
Qt / Вопросы новичков / Почему QTextBrowser не совсем корректно грузит html страницы?
|
: Февраль 06, 2020, 16:14
|
Здравствуйте, господа форумчане. Пишу простой браузер для открытия html-справки. Для этого использую класс QTextBrowser. Html страницы сохранены в web-страницы из Microsoft Office Word с использованием фильтров. Заметил некие отличия в отображении полученных html страниц браузером QTextBrowser и браузерами стандартными (Firefox, Google Chrome): 1) При использовании клавиши Ctrl и прокрутки мыши рисунки, в QTextBrowser не масштабируются, хотя размер шрифта меняется. В стандартных браузерах данное масштабирование работает. 2) Заглавие страниц в QTextBrowser отображается по левому краю, а в стандартных по центру. 3) В QTextBrowser не работают абзацы, тогда как в стандартных абзацы срабатывают. Походу QTextBrowser не все теги съедает. main.cpp#include "browser_dlg.h" #include <QApplication> #include <QStyleFactory>
int main(int argc, char *argv[]) { QApplication::setStyle(QStyleFactory::create("fusion"));
QApplication app(argc, argv); Browser_Dlg browser_dlg; browser_dlg.show();
return app.exec(); }
browser_dlg.h#ifndef MAINWINDOW_H #define MAINWINDOW_H
#include <QMainWindow> #include "ui_browser.h" #include <QTreeWidget>
namespace Ui { class MainWindow; }
class Browser_Dlg : public QMainWindow { Q_OBJECT
public:
QString path_help;
explicit Browser_Dlg(QWidget *parent = 0); ~Browser_Dlg(); Ui::MainWindow *ui;
void create_tree_content(QString path_folder); QString read_title(QString path);
public slots: void open_html_file(QTreeWidgetItem *itm);
private: };
#endif // MAINWINDOW_H
browser_dlg.cpp#include "browser_dlg.h" #include <QStyleFactory> #include <QFileInfo> #include <QTextStream> #include <QDebug> #include <QDir>
Browser_Dlg::Browser_Dlg(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this);
QFont font_tree_header("Times New Roman", 12, QFont::Bold); QFont font_tree_content("Times New Roman", 10, QFont::Normal);
path_help = QApplication::applicationDirPath() + "/help";
ui->tree_content->resizeColumnToContents(0); ui->tree_content->setStyle(QStyleFactory::create("windows")); ui->tree_content->resizeColumnToContents(0); ui->tree_content->setTextElideMode(Qt::ElideNone); ui->tree_content->setWordWrap(true); ui->tree_content->setFont(font_tree_content); ui->tree_content->setHeaderLabel("Содержание:"); ui->tree_content->headerItem()->setTextAlignment(0, Qt::AlignCenter); ui->tree_content->header()->setFont(font_tree_header); ui->tree_content->header()->setStretchLastSection(true);
connect(ui->tree_content, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(open_html_file(QTreeWidgetItem*)));
create_tree_content(path_help); }
Browser_Dlg::~Browser_Dlg() { delete ui; }
void Browser_Dlg::create_tree_content(QString path_folder) { QDir dir; dir.setPath(path_folder);
QStringList filters_file; filters_file << "*.html" << "*.htm";
QFileInfoList files_info_list = dir.entryInfoList(filters_file, QDir::Files);
foreach (QFileInfo child_info, files_info_list) { QTreeWidgetItem *item = new QTreeWidgetItem(ui->tree_content);
qDebug() << "Path: " << child_info.filePath(); item->setText(0, read_title(child_info.filePath())); item->setData(0, Qt::UserRole, QVariant(child_info.filePath()));
ui->tree_content->addTopLevelItem(item); } }
QString Browser_Dlg::read_title(QString path) { QString title = ""; QFile file_read(path);
if(file_read.open(QIODevice::ReadOnly)) { QTextStream file_read_stream(&file_read); file_read_stream.setCodec(file_read_stream.codec());
QString str = file_read_stream.readAll();
file_read.close();
QRegExp reg_title("<title>(.*)</title>"); reg_title.setMinimal(true);
int pos = 0;
while((pos = reg_title.indexIn(str, pos)) != -1) { title = reg_title.cap(1); break; } }
return title; }
void Browser_Dlg::open_html_file(QTreeWidgetItem *itm) { QString path_html = itm->data(0, Qt::UserRole).toString(); if(QFileInfo(path_html).suffix() == "html" || QFileInfo(path_html).suffix() == "htm") { ui->browser->setSource(QUrl("file:///" + path_html)); } }
Может кто знает как нужно настроить QTextBrowser, что-бы работали выше перечисленные функции? Исходники также прикрепил в архиве. Само приложение и справка с htm файлами лежит по путям: /Browser/OS_WIN/release/Browser.exe /Browser/OS_WIN/release/help
|
|
|
24
|
Qt / Вопросы новичков / Как задать стиль для ячеек первого столбца QTabelWidget?
|
: Январь 25, 2019, 11:58
|
Добрый день, Господа Форумчане. Недавно появилась необходимость задать marginтолько для ячеек первого столбца QTableWidget. Поискав в инете, нашел инфу о селекторе first-child. Но следующий стиль не сработал так как бы хотелось. setStyleSheet("QTableWidget::item:first-child {margin-top: 2px; margin-left: 1px;}");
В результате, данный стиль применился для всех ячеек таблицы. Может, кто подскажет? Как в QTableWidget задать стиль только для ячеек первого столбца?
|
|
|
25
|
Qt / Вопросы новичков / Как задать стиль для первого столбца QTabelWidget?
|
: Январь 25, 2019, 11:50
|
Добрый день, Господа форумчане. Недавно появилась необходимость задать margin только для первого столбца QTableWidget. Поискав в инете, нашел инфу о селекторе first-child. Но следующий стиль не сработал так как бы хотелось. setStyleSheet("QTableWidget::item:first-child {margin-top: 2px; margin-left: 1px;}");
В результате, данный
|
|
|
29
|
Qt / Вопросы новичков / Как отобразить процесс сохранения QPixmap изображения в файл?
|
: Август 20, 2018, 16:41
|
Здравствуйте, господа форумчане. Пишу приложение ScreenShot экрана. В ОС Windows это выглядит так: void screenShot() { QString image_str = "screenshot.png"; QWidget *desktop_w = QApplication::desktop(); WId w = desktop_w->winId();
QScreen *screen = QApplication::primaryScreen(); QPixmap pixmap = screen->grabWindow(w, 0, 0, desktop_w->width(), desktop_w->height());
if(image_str .isNull()) return;
if(pixmap.save(image_str , "PNG", 40) == false) { QFile(image_str ).remove(); } }
Появилась необходимость отобразить сам процесс сохранения изображения в виде QProgressBar-а с бегущими процентами. Но пока не могу понять как это реализовать. Разве что написать свой класс c QPixmap-а с измененным методом save. Может кто уже реализовывал подобное? Буду рад стоящим идеям.
|
|
|
Страниц: 1 [2] 3 4 ... 21
|
|
|