95a0104f2e9869799db84add108ae8c57b56d360 test: Add tests for directories in place of config files (Hodlinator) e85abe92c7cc5380489c028479f0d42f91827efd args: Catch directories in place of config files (Hodlinator) e4b6b1822ce004365be11c54c8f5f02f95303fb0 test: Add tests for -noconf (Hodlinator) 483f0dacc413f4b1ba1b74c2429c4367b87e7f11 args: Properly support -noconf (Hodlinator) 312ec64cc0619f58c6e8abc5855fd2fa0e920c3f test refactor: feature_config_args.py - Stop nodes at the end of tests, not at the beginning (Hodlinator) 7402658bc2b9d835b240edb9c1dac308859687c3 test: -norpccookiefile (Hodlinator) 39cbd4f37c3d3a32cd993cbc78052d53f700989b args: Support -norpccookiefile for bitcoind and bitcoin-cli (Hodlinator) e82ad88452bce4132e4583727e610d52dcf9ad9e logs: Use correct path and more appropriate macros in cookie-related code (Hodlinator) 6e28c76907ca0012b1a4556d9a982dfffb5abaf6 test: Harden testing of cookie file existence (Hodlinator) 75bacabb55f3d54ad9b2c660cafc82c167e4f644 test: combine_logs.py - Output debug.log paths on error (Hodlinator) bffd92f00f5bfbb5a622d0bd20bfeed9f8b10928 args: Support -nopid (Hodlinator) 12f8d848fd91b11d5cffe21dfc3ba124102ee236 args: Disallow -nodatadir (Hodlinator) 6ff9662760099c405cf13153dd1de22900045f5e scripted-diff: Avoid printing version information for -noversion (Hodlinator) e8a2054edc814b2c4661b96a3dce91da9be68fa4 doc args: Document narrow scope of -color (Hodlinator) Pull request description: - Document `-color` as only applying to `-getinfo`, to be less confusing for bitcoin-cli users. - No longer print version information when getting passed `-noversion`. - Disallow `-nodatadir` as we cannot run without one. It was previously interpreted as a mix of unset and as a relative path of "0". - Support `-norpccookiefile` - Support `-nopid` - Properly support `-noconf` (instead of working by accident). Also detect when directories are specified instead of files. Prompted by investigation in https://github.com/bitcoin/bitcoin/pull/16545#pullrequestreview-2316714013. ACKs for top commit: l0rinc: utACK 95a0104f2e9869799db84add108ae8c57b56d360 achow101: ACK 95a0104f2e9869799db84add108ae8c57b56d360 ryanofsky: Code review ACK 95a0104f2e9869799db84add108ae8c57b56d360. Looks good! Thanks for all your work on this breaking the changes down and making them simple. Tree-SHA512: 5174251e6b9196a9c6d135eddcb94130295c551bcfccc78e633d9e118ff91523b1be0d72828fb49603ceae312e6e1f8ee2651c6a2b9e0f195603a73a9a622785
This directory contains the source code for the Bitcoin Core graphical user interface (GUI). It uses the Qt cross-platform framework.
The current precise version for Qt 5 is specified in qt.mk.
Compile and run
See build instructions: Unix, macOS, Windows, FreeBSD, NetBSD, OpenBSD
When following your systems build instructions, make sure to install the Qt dependencies.
To run:
./build/src/qt/bitcoin-qt
Files and Directories
forms/
- A directory that contains Designer UI files. These files specify the characteristics of form elements in XML. Qt UI files can be edited with Qt Creator or using any text editor.
locale/
- Contains translations. They are periodically updated and an effort is made to support as many languages as possible. The process of contributing translations is described in doc/translation_process.md.
res/
- Contains graphical resources used to enhance the UI experience.
test/
- Functional tests used to ensure proper functionality of the GUI. Significant changes to the GUI code normally require new or updated tests.
bitcoingui.(h/cpp)
- Represents the main window of the Bitcoin UI.
*model.(h/cpp)
- The model. When it has a corresponding controller, it generally inherits from QAbstractTableModel. Models that are used by controllers as helpers inherit from other Qt classes like QValidator.
- ClientModel is used by the main application
bitcoinguiand several models likepeertablemodel.
*page.(h/cpp)
- A controller.
:NAMEpage.cppgenerally includes:NAMEmodel.handforms/:NAME.page.uiwith a similar:NAME.
*dialog.(h/cpp)
- Various dialogs, e.g. to open a URL. Inherit from QDialog.
paymentserver.(h/cpp)
- (Deprecated) Used to process BIP21 payment URI requests. Also handles URI-based application switching (e.g. when following a bitcoin:... link from a browser).
walletview.(h/cpp)
- Represents the view to a single wallet.
Other .h/cpp files
- UI elements like BitcoinAmountField, which inherit from QWidget.
bitcoinstrings.cpp: automatically generatedbitcoinunits.(h/cpp): BTC / mBTC / etc. handlingcallback.hguiconstants.h: UI colors, app name, etc.guiutil.h: several helper functionsmacdockiconhandler.(h/mm): macOS dock icon handlermacnotificationhandler.(h/mm): display notifications in macOS
Contribute
See CONTRIBUTING.md for general guidelines.
Note: Do not change local/bitcoin_en.ts. It is updated automatically.
Using Qt Creator as an IDE
Qt Creator is a powerful tool which packages a UI designer tool (Qt Designer) and a C++ IDE into one application. This is especially useful if you want to change the UI layout.
Download Qt Creator
On Unix and macOS, Qt Creator can be installed through your package manager. Alternatively, you can download a binary from the Qt Website.
Note: If installing from a binary grabbed from the Qt Website: During the installation process, uncheck everything except for Qt Creator.
macOS
brew install qt-creator
Ubuntu & Debian
sudo apt-get install qtcreator
Setup Qt Creator
- Make sure you've installed all dependencies specified in your systems build instructions
- Follow the compile instructions for your system, adding the
-DCMAKE_BUILD_TYPE=Debugbuild flag - Start Qt Creator. At the start page, do:
New->Import Project->Import Existing Project - Enter
bitcoin-qtas the Project Name and enter the absolute path tosrc/qtas Location - Check over the file selection, you may need to select the
formsdirectory (necessary if you intend to edit *.ui files) - Confirm the
Summarypage - In the
Projectstab, selectManage Kits...
macOS
- Under
Kits: select the default "Desktop" kit - Under
Compilers: select"Clang (x86 64bit in /usr/bin)" - Under
Debuggers: select"LLDB"as debugger (you might need to set the path to your LLDB installation)
Ubuntu & Debian
Note: Some of these options may already be set
- Under
Kits: select the default "Desktop" kit - Under
Compilers: select"GCC (x86 64bit in /usr/bin)" - Under
Debuggers: select"GDB"as debugger
- While in the
Projectstab, ensure that you have thebitcoin-qtexecutable specified underRun
- If the executable is not specified: click
"Choose...", navigate tosrc/qt, and selectbitcoin-qt
- You're all set! Start developing, building, and debugging the Bitcoin Core GUI