Не решенные How to Make a Command Prompt Using Signals and Slots?
Hi all, I am very new to Qt development. I’ve started working on an application and I would like one Widget within my application to function similar to a command prompt (but for custom commands in my application only, not an actual command prompt). Using a QLineEdit and a QPlainTextEdit I made something that approximates a command prompt. The user can type something in to the LineEdit, and when he hits enter I can parse the value and then append something to the PlainTextEdit. For example if the user types “help” I can append a help message and everything works fine. I’m stumped on how to handle more complex cases, specifically if the command requires a signal to be emitted and a response to handled in a slot. For example if the user types “process data” I want to call the function processData() which emits a signal, and it’s output is returned in a slot. That output needs to be formatted then appended to the command prompt. How would you recommend I do this? Should I be looking into synchronous signals and slots? Thanks in advance, I appreciate it.
Eeli K @psoberoi отредактировано
@psoberoi A command prompt is often by nature synchronous. You type a command and it gives output before you can type another command. If it’s asynchronous you can type new commands before the previous ones are processed and the output may come in random order. Which one do you want? If you want synchronous, you can write normal procedural code which just calls functions and returns the answer. I don’t see how signals and slots would help there at all. I mean, if you don’t need signals and slots for some external reasons (for example there’s some event driven code also in your application which already uses those signals and slots) you don’t need it for synchronous operation. But if you do need them, it should be straightforward in most basic cases where there’s no threads and one sender per one receiver and vice versa. When you create a basic connection with “connect(sender, signal, receiver, slot)” it will be synchronous. When you use emit it calls the slot as if it were a normal function call. If you have coded the signal, slot and emit yourself you could replace it with a normal function call.
psoberoi отредактировано
Thank you for the quick reply. I agree with you that a command prompt should be synchronous to the user. My issue is some of the commands I want to support require emitting signals and receiving the response via a slot. For example I support one command which spawns a new process, and I receive it’s output via a signal. How would you recommend making a signal\slot appear synchronous to the user? I’ve been trying to follow this thread: https://forum.qt.io/topic/23550/making-asynchronous-calls-work-like-synchronous-calls/4. I’m not sure if that’s the correct way for me to proceed as I need to wait for a particular slot to be called. How would I support a command that requires multiple signals/slots to run before posting it’s final output? I realize I’m in over my head. I appreciate any advice you can offer. Thanks again.
jsulm Lifetime Qt Champion @psoberoi отредактировано
@psoberoi I would just add finished() signal to all supported commands. If the user starts such a command, then the command prompt is blocked until finished() signal is emitted. No need to wait explicitly for anything. In addition your commands can have other signals, but as long as finished() is not emitted the command is not considered to be finished.
cmd368
Alternative Hanoi, VN . more
cmd368
Alternative Hanoi, VN
cmd368
Alternative Hanoi, VN . more
cmd368
Alternative Hanoi, VN
Saved. Receive Updates?
ReverbNation
Artist Membership
Artist Development
- Opportunity Submissions
- Crowd Reviews
- Gig Finder
Artist Tools
- Advertise on Music Sites
- Sponsored Artists
- Digital Distribution
- Sell Direct
- Fan Reach
- Site Builder
- Marketplace
- Publishing Administration
Policies
ReverbNation
Artist Membership
Artist Development
- Opportunity Submissions
- Crowd Reviews
- Gig Finder
Artist Tools
- Advertise on Music Sites
- Sponsored Artists
- Digital Distribution
- Sell Direct
- Fan Reach
- Site Builder
- Marketplace
- Publishing Administration
Policies
© 2006-2024 BandLab Singapore Pte. Ltd.
All third party trademarks are the property of the respective trademark owners. ReverbNation is not affiliated with those trademark owners.
The Simpson has a short loft and is very dense and for me was a bit scritchy. If you have a thick beard and strong skin it is an excellent choice for face lathering. It will work fine for bowl lathering but I prefer something with more loft and a longer handle.
Although we are not currently hiring, we are seeking resumes to keep on file from those interested in future openings.
Estimasi pengiriman barang kurang lebih 3-7 hari kerja diluar Sabtu Minggu dan hari Libur.
(OFFICE HOUR)
However, should you feel that a review is in violation of our guidelines, you can submit a request to have the review assessed by the ProvenExpert quality assurance team by using the following contact form.
By using the Web site, you confirm that you have read, understood, and agreed to be bound by the Terms and Conditions.
Bekerja sama dengan Situs Alternatif CMD368 yang dicari:
SBOBET is a global company operating an online sportsbook and casino, offering over 1,500 sports events , live dealer casino games, exciting slots and other popular casino games. They cover a wide range of sports, in many countries covering top and lower leagues delivering a virtual 24 / 7 offering of games CLICK HERE TO SIGN UP NOW!
Experts’ Advice: The odds listed above might differ from the ones available to you. As our picks are also based on time-tested algorithms, pick the advantaged team if your odds are different from the ones displayed here and you will be better off in the long run.
Crystal Palace signed Larne FC prospect Craig Farquhar
about 3 hours ago
Crystal Palace fullback Adaramola joins RWD Molenbeek
about 3 hours ago
Newcastle announce hopes of Joelinton playing this season
about 3 hours ago
Accrington Stanley to deal in Man Utd keeper Vitek
about 3 hours ago
PSV, Roma join interest in Man Utd winger Pellistri
about 3 hours ago
Everton midfielder Garner: Old-school Dyche approach suits me
about 3 hours ago
Liverpool No2 Lijnders: Van Dijk as strong as ever
about 3 hours ago
Chelsea boss Pochettino explains Mudryk halftime change
about 3 hours ago