1220
Link: @CplusplusQt Embedded: @EMBCpp • Allowed Topics: C++ and everything related to Qt • Use only English • No Private Message without asking user's permission • No NSFW • No Spam • No unauthorized Bots • No Offtopic • No Self Promotions
I want to ask something straight
What are the chances to get a job being proficient in QT as compared to being proficient in backend development in Java in the current job market especially in countries like India?
I am on the aisle deciding which edge to choose
Genuine help would be appreciated
Thank you reading
Welcome to the group, @Wincreato! :-)
Wanna share your story of how you started with Qt, QML or C++? Maybe some nice feature that made you stick with it.
Rules are set on the description of the group. :)
Welcome to the group, @Gencemiri! :-)
Wanna share your story of how you started with Qt, QML or C++? Maybe some nice feature that made you stick with it.
Rules are set on the description of the group. :)
perhaps it doesn't have to be perfect either? Skipping some lines when resizing isn't that much of a problem perhaps?
Читать полностью…
also wondering what will happen if i will just be getting element in the vierwport and calling the resizeRowToContents
Читать полностью…
resizeToContents on first 3 columns also make gui thread go up to 100% but without visible lag. this could be made fixed size thats all
Читать полностью…
so if i set all resize policies to fixed without word wrap and the 4th column to stretch(cant see full mesage) or interactive(this could work but word wrap + stretch would be beter), i get decent performance
if on to of previous i do word wrap, nothing is changing because the row height is fixed, but if i enable resizeToContents on the vertical header i get huuuge performance penalty
god damn there is no valgrind on mac arm yet, constant pain in the butt, i have to use pc for this purposes
Читать полностью…
so this behave same on my air m2. scroll is takin 2-3% of cpu is short bursts (idk seems ok), resize with mouse eats up entire gui thread/core to 100%
Читать полностью…
just a showcase: the daw / media sequencer I've been building for some years, ossia score (https://ossia.io) with its Qt RHI shader pipeline finally running through QRhi in a webbrowser:
Читать полностью…
For members serious about growth, Alex Gonzalez is the mentor to follow. His crypto trading tips enabled me to realize $6,000 in profits this month.
Читать полностью…
I think the main thing is to not let it recalculate everything at 60 Hz (or worse)
Читать полностью…
i would like to hear some suggestions bout the "not letting the table view do something by itself on resize for all rows/columns"
Читать полностью…
so i managed to make this
log_view::log_view(log_model* lm)
: QTableView(nullptr) {
setModel(lm);
setAlternatingRowColors(true);
setSelectionMode(QAbstractItemView::SingleSelection);
setSelectionBehavior(QAbstractItemView::SelectRows);
setWordWrap(true);
verticalHeader()->setSectionResizeMode(QHeaderView::Fixed);
verticalHeader()->setDefaultSectionSize(24);
auto header = horizontalHeader();
// i gave up on dynamic columns, just eyeballed the default size and let the
// user change it god damn
header->setSectionResizeMode(0, QHeaderView::Interactive);
header->resizeSection(0, 140);
header->setSectionResizeMode(1, QHeaderView::Interactive);
header->resizeSection(1, 80);
header->setSectionResizeMode(2, QHeaderView::Interactive);
header->resizeSection(2, 73);
header->setSectionResizeMode(3, QHeaderView::Stretch);
connect(
header, &QHeaderView::sectionResized,
this, &log_view::on_section_resized
);
connect(
verticalScrollBar(), &QScrollBar::valueChanged,
this, &log_view::schedule_visible_row_resize
);
connect(
model(), &QAbstractItemModel::dataChanged, this,
[this](const QModelIndex& topLeft, const QModelIndex& bottomRight) {
if (topLeft.column() == 3) {
for (int r = topLeft.row(); r <= bottomRight.row(); ++r)
if (visualRect(model()->index(r, 0)).intersects(viewport()->rect()))
resizeRowToContents(r);
}
}
);
QMetaObject::invokeMethod(this, &log_view::schedule_visible_row_resize, Qt::QueuedConnection);
}
void log_view::on_section_resized(int logicalIndex, int oldSize, int newSize) {
if (logicalIndex == 3)
schedule_visible_row_resize();
}
void log_view::schedule_visible_row_resize() {
QMetaObject::invokeMethod(
this, &log_view::update_visible_row_heights,
Qt::QueuedConnection
);
}
void log_view::update_visible_row_heights() {
if (!model() || model()->rowCount() == 0)
return;
setUpdatesEnabled(false);
const int first = rowAt(0);
if (first < 0) {
setUpdatesEnabled(true);
return;
}
int last = rowAt(viewport()->height() - 1);
if (last < 0)
last = model()->rowCount() - 1;
for (int row = first; row <= last; ++row)
resizeRowToContents(row);
setUpdatesEnabled(true);
}
void log_view::resizeEvent(QResizeEvent* ev) {
setUpdatesEnabled(false); // importand to not let the table view do nothin by itlself
QTableView::resizeEvent(ev);
setUpdatesEnabled(true);
schedule_visible_row_resize();
}
Qt’s standard “do it once, later” patternЧитать полностью…
When the current event loop finishes processing all the resize/scroll/paint events that are already queued, then run this once
it has to look at all elements above at least (and perhaps the rest of them to get the scrollbar size right)
Читать полностью…
With dynamic row height it has to do that i suppose, but perhaps it could happen less often
Читать полностью…
i wonder as if the widget tries to recalculate all the heights, maybe this could be optimized to only update visible elements somehow
Читать полностью…
this defenitetly helps with performance with 200 elements. but with 10k it is not enough
Читать полностью…
@Dolfost i tried this and it doesn't feel that slow on my machine:
QStandardItemModel* lm = new QStandardItemModel();
lm->setColumnCount(4);
for(int i = 0; i < 2000; ++i)
{
QList<QStandardItem*> row;
row << new QStandardItem(QString::number(i)) << new QStandardItem("A") << new QStandardItem("B");
if(i % 20 == 0)
row << new QStandardItem("CCCCCCCCCC CCCCCCCCCC CCCCCCCCCC CCCCCCCCCC CCCCCCCCCC CCCCCCCCCC CCCCCCCCCC CCCCCCCCCC CCCCCCCCCC CCCCCCCCCC CCCCCCCCCC CCCCCCCCCC CCCCCCCCCC CCCCCCCCCC CCCCCCCCCC CCCCCCCCCC ");
else
row << new QStandardItem("C");
lm->appendRow(row);
}
ui->log_view->setModel(lm);
ui->log_view->setAlternatingRowColors(true);
ui->log_view->setSelectionMode(QAbstractItemView::SelectionMode::SingleSelection);
ui->log_view->setSelectionBehavior(QAbstractItemView::SelectionBehavior::SelectRows);
ui->log_view->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeMode::ResizeToContents);
auto header = ui->log_view->horizontalHeader();
header->setSectionResizeMode(0, QHeaderView::ResizeMode::ResizeToContents);
header->setSectionResizeMode(1, QHeaderView::ResizeMode::ResizeToContents);
header->setSectionResizeMode(2, QHeaderView::ResizeMode::ResizeToContents);
header->setSectionResizeMode(3, QHeaderView::ResizeMode::Stretch);
ui->log_view->setWordWrap(true);
connect(header, &QHeaderView::sectionResized, this,
[this](int logicalIndex, int /*oldSize*/, int /*newSize*/) {
if (logicalIndex == 3)
ui->log_view->resizeRowsToContents();
}
);