Re: [Interest] Q_NAMESPACE is not portable?

2019-08-23 Thread Giuseppe D'Angelo via Interest

On 24/08/2019 00:10, Matthew Woehlke wrote:

Am I doing something wrong, or is it impossible to use Q_NAMESPACE
correctly without platform-specific PP conditionals?


I've fixed this in 5.14, see


https://doc-snapshots.qt.io/qt5-dev/qobject.html#Q_NAMESPACE_EXPORT


Cheers,

--
Giuseppe D'Angelo | giuseppe.dang...@kdab.com | Senior Software Engineer
KDAB (France) S.A.S., a KDAB Group company
Tel. France +33 (0)4 90 84 08 53, http://www.kdab.com
KDAB - The Qt, C++ and OpenGL Experts



smime.p7s
Description: S/MIME Cryptographic Signature
___
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest


[Interest] Q_NAMESPACE is not portable?

2019-08-23 Thread Matthew Woehlke
Am I missing something, or is it impossible to portably use Q_NAMESPACE?

If I just use Q_NAMESPACE on its own, e.g.:

  namespace foo {
  Q_NAMESPACE
  }

...then I get unresolved externals on Linux. If I attempt the obvious fix:

  namespace foo {
  Q_NAMESPACE
  extern FOO_EXPORT const QMetaObject staticMetaObject; // Ugh
  }

...then I get 'redefinition, different linkage' errors on Windows.

Am I doing something wrong, or is it impossible to use Q_NAMESPACE
correctly without platform-specific PP conditionals?

-- 
Matthew
___
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest


[Interest] Using Q_ENUM_NS?

2019-08-23 Thread Matthew Woehlke
Is it *really* impossible to use Q_ENUM_NS (in the same namespace) in
more than one header? If not, how does one do so correctly?

If I don't have code that looks *exactly* like this:

  namespace whatever {
  Q_NAMESPACE
  Q_ENUM_NS(...)
  }

...moc is unhappy. But if Q_NAMESPACE appears in more than one header, I
get duplicate definition errors.

-- 
Matthew
___
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest


Re: [Interest] equivalent of python glob

2019-08-23 Thread Bob Hood

On 8/23/2019 9:03 AM, Thiago Macieira wrote:

On Friday, 23 August 2019 07:38:56 PDT Bob Hood wrote:

e.g., QDirIterator iter(base_folder, QStringList() << "*.*", QDir::Files,
QDirIterator::Subdirectories);

"*.*" is "all files containing a dot" (and not in the first character) and the
vast majority of files in /usr/bin don't.


Yeah, sorry, that was from Windows code.

___
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest


Re: [Interest] equivalent of python glob

2019-08-23 Thread Thiago Macieira
On Friday, 23 August 2019 07:38:56 PDT Bob Hood wrote:
> e.g., QDirIterator iter(base_folder, QStringList() << "*.*", QDir::Files,
> QDirIterator::Subdirectories);

"*.*" is "all files containing a dot" (and not in the first character) and the 
vast majority of files in /usr/bin don't.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel System Software Products



___
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest


Re: [Interest] equivalent of python glob

2019-08-23 Thread Bob Hood

On 8/23/2019 12:46 AM, Hamish Moffatt wrote:

Hi,

In Python one can write the expression: glob.glob("/usr/bin/*") and get a 
list of such files. I am looking for something similar in Qt (in C++).


I have look at QDir::entryList() and entryInfoList(), but it seems I would 
have to extract the path first and provide it to QDir. I can't use 
QDir('/').entryList({ "/usr/bin/*" }), as it returns nothing.


Look at QDirIterator.

e.g., QDirIterator iter(base_folder, QStringList() << "*.*", QDir::Files, 
QDirIterator::Subdirectories);

___
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest


Re: [Interest] Qt free software policy

2019-08-23 Thread Jérôme Godbout
1) Compilation method which removes 100% of QML, including QML support from 
non-QML classes.

> While my correct views of QML are widely known, the reality is that many 
> embedded and IoT systems have no UI or correctly choose not to use QML 
> because they are running on battery without a GPU. Unless these systems fall 
> back to a pre-QML version of Qt, they cannot get rid of the buggy baggage.

If you design your software right nothing in Qml should be seen into your C++ 
except the module registration. Your C++ code expose to the meta object with 
properties and signal and that's about it.Qml use the meta exposition, you can 
still use the meta calls without Qml. This is one thing I really like about 
Qml, it doesn't invade the application code, it sit above it and you can use 
the javascript for view model adaptor/converter. I have give up on QWidget and 
looking at my code base now I would not go back, the automatic binding re 
evaluation is such a connect() call saver. 

-Original Message-
From: Interest  On Behalf Of Roland Hughes
Sent: August 22, 2019 11:21 AM
To: interest@qt-project.org
Subject: Re: [Interest] Qt free software policy


On 8/22/19 5:00 AM, James Ross-Smith wrote:
> This a quite a timely thread, as I, like several others in here, am 
> trying to decide on a Commercial or non-Commercial licensing approach with Qt.
> I've submitted numerous contact/quote/trial requests on the TQtC 
> website over the last couple of weeks but never hear back, so it's 
> very helpful to stumble across this discussion.

You are welcome. We do try to be of assistance in here.

To answer the other question I didn't cut and paste . . . For whatever reason 
Qt Company didn't follow the Cannonical (Ubuntu) model. The ex-wife alimony 
fixation on royalties makes me believe they have a whole lot of Dire Straights 
Syndrome going on.

https://www.youtube.com/watch?v=JRDgihVDEko

While it was a great tune, it was not a good business model.

I just finished up at a client site where commercial license was purchased. I 
wasn't there or it never would have happened as they certainly had no need for 
the "latest" anything. Be that as it may, the negotiations started and happened 
many states away.

The way our "support" was explained to me by our boss was this (it might be 
different for every negotiation):

"If we have trouble with installation of the development software, 
configuration of the development environment or cross compiling for the target 
system we can call and get help right away. If we find a bug we have to file a 
bug report and get in the queue with everyone else."

When someone mentions "software support" a large chunk of the industry, 
especially those of us who are older and have worked on large systems from 
Digital Equipment Corporation, Oracle, IBM, etc., we expect a sev-level 
escalation tree. You start somewhere down at the 4 or 5 level (normally the 
bottom) and unresolved problems keep getting kicked up the tree until it 
becomes a sev-1 (it can start at sev-1 if you have a complete production 
outage). At sev-1 the vendor assembles a trauma-1 team which generally includes 
one or more of the developers who actually developed the particular piece of 
hardware or software which is suspect.

Mileage may vary, but that has not been my experience in the Qt world. I 
believe that is partially due to the distributed (OpenSource) nature of the 
development. There are big chunks of Qt which Qt Company had basically nothing 
to do with. I'm thinking the 3-D stuff might be a good example given a message 
thread on this list from some months back. A company of some size, be it one or 
more, developed the package and donated some or all of it to the community. 
Unless Qt Company was to pay that company for sev-level support, how could Qt 
Company ever provide support for it? Sure, coders who never wrote any of it 
could dig through the code and hopefully find something, but that's not exactly 
the level of support one thinks of when they hear "support contract."

A much larger part of the issue has been, in my opinion, not sufficiently 
pursuing a large embedded systems consulting group. I'm talking about an 
embedded system in a box type consulting company where they could do project 
level stuff from hardware design all the way through setting up factory 
production. When people "went to the bench" 
they would be working on Qt itself and providing support. This is how the old, 
successful, companies did it. Albeit they were working on mid-range and 
mainframe systems at the time.

The "device in a box" type companies are growing at alarming rates. Once they 
bring in the correct heavy hitters (both high architectural level and low 
firmware/algorithm level) they go from startup to nearly $20Million in just a 
couple of years. The one problem all of them seem to have is pursuing 100% 
billable time for all employees. If you are a 100% billable you are 100% 
failure, it just may take you 

Re: [Interest] Qt free software policy

2019-08-23 Thread Roland Hughes


On 8/23/19 1:59 AM, Kai Köhne wrote:

-Original Message-
From: Interest  On Behalf Of Roland
Hughes
[...]
The way our "support" was explained to me by our boss was this (it might be
different for every negotiation):

"If we have trouble with installation of the development software,
configuration of the development environment or cross compiling for the
target system we can call and get help right away. If we find a bug we have to
file a bug report and get in the queue with everyone else."

That's not true (unless "everyone else" means all people with the same support 
level). The people in Qt support will also try to directly provide you with a patch 
and/or workaround, if possible. Also the internal development teams in the Qt Company 
will prioritize bugs coming from commercial customers. That's why it's actually advised 
to file a bug through Qt Support, or at least inform Qt Support that you filed a bug in 
JIRA if you are a commercial customer.


Prioritize != Ride Bug to Extinction

At some point I expect "that guy again" to chime in here about the 
REGRESSION bugs he filed which have been rotting for years. Their bits 
may have turned to dust by now.


I always have trouble communicating this to people who have never worked 
with real computers. They have no concept of what real sev-level support 
is. They believe throwing bugs into JIRA and watching them age like 
Bourbon is "support." It can't even buy a ticket to watch real support 
happen.


My first IT job was a midnight computer operator at Airfone, Inc. They 
put credit card telephones in airplanes long before anyone had cell 
phones. They were dead broke from building all of the ground stations 
and installing the phones we had installed. Had even missed payroll so 
we were all working for free. The only bill which was religiously paid 
was our sev-level support contract with DEC.


It was about 11:30 at night when we had a major outage. I forget what it 
was. I called the systems analyst who had me boot/load the Colorado 
software on the system console. Then phone in to the Colorado voice 
support line.


I was on the phone with Colorado when I had to set the phone down to 
sign for someone with the security guard. The person I had to sign in 
was from DEC support. Colorado had dispatched them from a regional 
office once their diagnostics firmware identified the problem area from 
the OPCOM and AUDIT logs.


He stayed until some time after 4a.m. We were fully functional when he left.

I wasn't on-site for this one but worked with the individual who was. He 
used to love telling me this story.


When Oracle first introduced RAC it was an even bigger hand polished 
turd than QML. I know that is difficult to wrap one's mind around if 
you've been exposed to QML, but, there it is.


Oracle convinced a major downstate heavy equipment manufacturer to roll 
out a new critical system based on Oracle RAC on some flavor of *nix 
instead of basing it on the already proven RDB running on OpenVMS.


The only OS then or now which well and truly clusters is OpenVMS. 
Everything else claims whatever sad and pathetic thing they are capable 
of, clustering. It's as night and day different as real support and 
filing a JIRA ticket.


This system was production critical when it went online. The database 
was completely corrupted multiple times. I'm told Oracle had an entire 
team on-site for weeks, all as part of the support contract.


Big companies are willing to take big chances on unproven technologies 
when they can get sev-level support. "Filing a ticket" isn't sev-level 
support. When there is no written promise that however many bodies 
necessary will be allocated 100%, even on-site 100% when needed, all as 
part of the support contract, it isn't sev-level support.


Here's another one I was on-site for.

Payroll conversion project at Quaker Oats. They were kicking ADP to the 
curb and bringing payroll in-house with PeopleSoft. All of the mills and 
plants were still running Cyborg payroll. The feed from Cyborg had to 
create a different file for transmission to PeopleSoft at the corporate 
office. At the time Cyborg was 1970s style COBOL using the card format 
with line numbers and it was distributed in source. They also had their 
own "4GL" called Generator which was supposed to be platform independent 
but used COBOL underneath.


Someone, whom I can only assume is either the worst human being ever or 
the most unfortunate one, worked at one of the east coast pet food 
factories. The exact number escapes me. I can't remember if it was 25 or 
27 wage garnishments they had, just that it was north of 20 and one more 
than the Cyborg payroll system could handle. It crashed payroll. Factory 
workers tend to live paycheck to paycheck and nobody was getting paid 
until that bug was fixed.


Cyborg sent the head or one of the head/lead developers to our office. 
He patched the software with us sitting there. We compiled it, tested 
it, and 

Re: [Interest] Qt free software policy

2019-08-23 Thread Kai Köhne
> -Original Message-
> From: Interest  On Behalf Of Roland
> Hughes
> [...]
> The way our "support" was explained to me by our boss was this (it might be
> different for every negotiation):
> 
> "If we have trouble with installation of the development software,
> configuration of the development environment or cross compiling for the
> target system we can call and get help right away. If we find a bug we have to
> file a bug report and get in the queue with everyone else."

That's not true (unless "everyone else" means all people with the same support 
level). The people in Qt support will also try to directly provide you with a 
patch and/or workaround, if possible. Also the internal development teams in 
the Qt Company will prioritize bugs coming from commercial customers. That's 
why it's actually advised to file a bug through Qt Support, or at least inform 
Qt Support that you filed a bug in JIRA if you are a commercial customer.

https://www.qt.io/qt-support/


Kai

--
Kai Köhne, Senior Manager R | The Qt Company

The Qt Company GmbH, Erich-Thilo-Str. 10, D-12489 Berlin
Geschäftsführer: Mika Pälsi, Juha Varelius, Mika Harjuaho. Sitz der
Gesellschaft: Berlin, Registergericht: Amtsgericht Charlottenburg, 
HRB 144331 B
___
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest


[Interest] equivalent of python glob

2019-08-23 Thread Hamish Moffatt

Hi,

In Python one can write the expression: glob.glob("/usr/bin/*") and get 
a list of such files. I am looking for something similar in Qt (in C++).


I have look at QDir::entryList() and entryInfoList(), but it seems I 
would have to extract the path first and provide it to QDir. I can't use 
QDir('/').entryList({ "/usr/bin/*" }), as it returns nothing.



Does anyone have a recipe?



Thanks

Hamish


___
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest