elements/src/qt
merge-script 338bc2cd26
Merge bitcoin/bitcoin#30454: build: Introduce CMake-based build system
41051290ab cmake: Ignore build subdirectories within source directory (Hennadii Stepanov)
6ce50fd9d0 doc: Update for CMake-based build system (Hennadii Stepanov)
9730288a0c ci: Migrate CI scripts to CMake (Hennadii Stepanov)
c360837ca5 cmake, lint: Adjust `lint_includes_build_config` (Hennadii Stepanov)
3885441ee0 cmake: Add presets for native Windows builds (Hennadii Stepanov)
7681746b20 cmake: Add vcpkg manifest file (Hennadii Stepanov)
8b6f1c4353 cmake: Add `Coverage` and `CoverageFuzz` scripts (Hennadii Stepanov)
65bdbc1ff2 cmake: Add `docs` build target (Hennadii Stepanov)
fb75ebbc33 cmake: Add compiler diagnostic flags (Hennadii Stepanov)
e821f0a37a cmake: Migrate Guix build scripts to CMake (Hennadii Stepanov)
747adb6ffe cmake: Add `Maintenance` module (Hennadii Stepanov)
1f60b30df0 cmake: Add `APPEND_{CPP,C,CXX,LD}FLAGS` cache variables (Hennadii Stepanov)
2b43c45b13 cmake: Add `AddWindowsResources` module (Hennadii Stepanov)
973a3b0c5d cmake: Implement `install` build target (Hennadii Stepanov)
84ac35cfd4 cmake: Add cross-compiling support (Hennadii Stepanov)
0d01c228a7 build: Generate `toolchain.cmake` in depends (Hennadii Stepanov)
91a799247d depends: Add host-specific `cmake_system_version` variables (Hennadii Stepanov)
9b31209b4c depends: Rename `cmake_system` -> `cmake_system_name` (Hennadii Stepanov)
4a5208a81d Revert "build, qt: Do not install *.prl files" (Hennadii Stepanov)
6522af62af depends: Amend handling flags environment variables (Hennadii Stepanov)
90cec4d251 cmake: Add `MULTIPROCESS` option (Hennadii Stepanov)
bb1a450dcb cmake: Build `bitcoin-chainstate` executable (Hennadii Stepanov)
aed38ea58c cmake: Build `bitcoinkernel` library (Hennadii Stepanov)
975d67369b cmake: Build `test_bitcoin-qt` executable (Hennadii Stepanov)
10fcc668a3 cmake: Add `WITH_DBUS` option (Hennadii Stepanov)
5bb5a4bc75 cmake: Add `libqrencode` optional package support (Hennadii Stepanov)
57a6e2ef4a cmake: Build `bitcoin-qt` executable (Hennadii Stepanov)
30f642952c cmake: Add `WERROR` option (Hennadii Stepanov)
c98d4a4c34 cmake: Add `REDUCE_EXPORTS` option (Hennadii Stepanov)
a01cb6e63f cmake: Add `HARDENING` option (Hennadii Stepanov)
a8a2e364ac cmake: Add Python-based tests (Hennadii Stepanov)
3d85379570 cmake: Add fuzzing options (Hennadii Stepanov)
908530e312 cmake: Add `SANITIZERS` option (Hennadii Stepanov)
8bb0e85631 cmake: Build `bench_bitcoin` executable (Hennadii Stepanov)
801735163a cmake: Add external signer support (Hennadii Stepanov)
353e0c9e96 cmake: Add `systemtap-sdt` optional package support (Hennadii Stepanov)
d2fda82b49 cmake: Add `libzmq` optional package support (Hennadii Stepanov)
ae7b39a0e1 cmake: Add `libminiupnpc` optional package support (Hennadii Stepanov)
6480e1dcdb cmake: Add `libnatpmp` optional package support (Hennadii Stepanov)
e73e9304a1 cmake: Build `bitcoin-util` executable (Hennadii Stepanov)
027c6d7caa cmake: Build `bitcoin-tx` executable (Hennadii Stepanov)
d10c5c34c3 cmake: Add wallet functionality (Hennadii Stepanov)
ab2e99b0d9 cmake: Create test suite for `ctest` (Hennadii Stepanov)
959370bd76 cmake: Build `test_bitcoin` executable (Hennadii Stepanov)
b27bf9700d cmake: Build `bitcoin-cli` executable (Hennadii Stepanov)
a9813df826 cmake: Build `bitcoind` executable (Hennadii Stepanov)
97829ce2d5 cmake: Add `FindLibevent` module (Hennadii Stepanov)
3118e40c61 cmake: Build `bitcoin_consensus` library (Hennadii Stepanov)
809a2f1929 cmake: Build `bitcoin_util` static library (Hennadii Stepanov)
0a9a521a70 cmake: Build `bitcoin_crypto` library (Hennadii Stepanov)
958971f476 cmake: Build `univalue` static library (Hennadii Stepanov)
752747fda8 cmake: Generate `obj/build.h` header (Hennadii Stepanov)
1f0a78edf3 cmake: Build `minisketch` static library (Hennadii Stepanov)
12bfbc8154 cmake: Build `leveldb` static library (Hennadii Stepanov)
51985c5304 cmake: Build `crc32c` static library (Hennadii Stepanov)
db7a198f29 cmake: Build `secp256k1` subtree (Hennadii Stepanov)
dbb7ed14e8 cmake: Add `ccache` support (Hennadii Stepanov)
cedfdf6c72 cmake: Redefine/adjust per-configuration flags (Hennadii Stepanov)
b6b5e732c8 cmake: Add global compiler and linker flags (Hennadii Stepanov)
f98327931b cmake: Add `TryAppendLinkerFlag` module (Hennadii Stepanov)
4a0af29697 cmake: Add `TryAppendCXXFlags` module (Hennadii Stepanov)
35cffc497d cmake: Add POSIX threads support (Hennadii Stepanov)
fd72d00ffe cmake: Add position independent code support (Hennadii Stepanov)
07069e2bb0 cmake: Add introspection module (Hennadii Stepanov)
27d687fc1f cmake: Add `config/bitcoin-config.h` support (Hennadii Stepanov)
fe5cdace5f cmake: Print compiler and linker flags in summary (Hennadii Stepanov)
70683884c5 cmake: Introduce interface libraries to encapsulate common flags (Hennadii Stepanov)
a2317e27b7 cmake: Add root `CMakeLists.txt` file (Hennadii Stepanov)

Pull request description:

  This PR introduces a new CMake-based build system, which is a drop-in replacement for the current Autotools-based build system.

  ML announcement: https://groups.google.com/g/bitcoindev/c/hgKkfQWzrTo

  As discussed during the recent CoreDev meetup in April, the switch from Autotools to CMake is intended to happen as soon as possible after branching 28.x off, which means that 29.0 will be built using CMake.

  This PR branch is essentially the [staging branch](https://github.com/hebasto/bitcoin/tree/cmake-staging), with every change reviewed and tested by a group of contributors, including (in alphabetical order):
  - [**achow101**](https://github.com/achow101)
  - [**fanquake**](https://github.com/fanquake)
  - [**maflcko**](https://github.com/maflcko)
  - [**m3dwards**](https://github.com/m3dwards)
  - [**pablomartin4btc**](https://github.com/pablomartin4btc)
  - [**real-or-random**](https://github.com/real-or-random)
  - [**ryanofsky**](https://github.com/ryanofsky)
  - [**sipsorcery**](https://github.com/sipsorcery)
  - [**TheCharlatan**](https://github.com/TheCharlatan)
  - [**theStack**](https://github.com/theStack)
  - [**theuni**](https://github.com/theuni)
  - [**vasild**](https://github.com/vasild)

  Reviewing in a separate staging repo was suggested in https://github.com/bitcoin/bitcoin/pull/27060#issuecomment-1431798320.

  The accompanying changes to the OSS-Fuzz project are available in https://github.com/hebasto/oss-fuzz/pull/8.

  Please refer to the [build options parity table](https://gist.github.com/hebasto/2ef97d3a726bfce08ded9df07f7dab5e). The "auto" value is no longer available; non-default values must be specified explicitly. Additionally, the new default values have been chosen to suit the everyday build experience for the majority of developers.

  System requirements for using the CMake-based build system:
  - CMake >= 3.22 (if not available in your system's repository, it can be downloaded from https://cmake.org/download/)
  - a build tool of your choice:
  - any Make (GNU Make is no longer a requirement); GNU Make is still required to build depends
  - Ninja (https://ninja-build.org/)
  - MSBuild
  - Xcode

  A note for Windows users: The default installation of the latest version of MSVC 17.10.4 includes both CMake 3.28.3 and the vcpkg package manager).

  ---

  We, the build system developers, kindly ask reviewers to refrain from making suggestions that are not directly related to the migration process or can be implemented separately. Bugs in the scripts and errors in the updated documentation should be the focus of this PR. Please be advised that comments not aligned with this PR's goal may be ignored.

  Thank you all for your understanding.

ACKs for top commit:
  maflcko:
    review ACK 41051290ab 🐥
  sipsorcery:
    ACK 41051290ab.
  vasild:
    ACK 41051290ab
  TheCharlatan:
    ACK 41051290ab
  pablomartin4btc:
    tACK 41051290ab
  i-am-yuvi:
    tACK [`4105129`](41051290ab)
  theuni:
    ACK 41051290ab.
  fanquake:
    ACK 41051290ab

Tree-SHA512: 6c1445054436c6c00ad63bfa0f19d64091a2b25c9bd694f85bf2218ac358ffb774d6c000685b3ca1e9b50401babed989fa2a0694b774c211d226bfd1944c9b39
2024-08-28 10:51:24 +01:00
..
forms Merge bitcoin-core/gui#626: Showing Local Addresses in Node Window 2024-08-02 14:19:02 +01:00
locale qt: 28.0 translations update 2024-08-26 08:38:58 +01:00
res scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
test cmake: Build test_bitcoin-qt executable 2024-08-16 19:28:59 +01:00
addressbookpage.cpp scripted-diff: Fix bitcoin_config_h includes 2024-02-13 20:10:44 +00:00
addressbookpage.h gui: Add wallet name to address book page 2023-10-04 17:01:49 -03:00
addresstablemodel.cpp refactor: Drop util::Result operator= 2024-04-25 16:08:24 -04:00
addresstablemodel.h gui: Add wallet name to address book page 2023-10-04 17:01:49 -03:00
askpassphrasedialog.cpp gui: Use wallet name for wallet migration rather than WalletModel 2024-08-13 11:25:38 -04:00
askpassphrasedialog.h gui: Use wallet name for wallet migration rather than WalletModel 2024-08-13 11:25:38 -04:00
bantablemodel.cpp gui: fix comments for BanTableModel and BanTablePriv::refreshBanlist() 2023-03-06 16:07:08 +01:00
bantablemodel.h gui: fix comments for BanTableModel and BanTablePriv::refreshBanlist() 2023-03-06 16:07:08 +01:00
bitcoin.cpp qt, build: Drop QT_STATICPLUGIN macro 2024-08-01 14:01:07 +01:00
bitcoin.h scripted-diff: Add IWYU pragma keep to bitcoin-config.h includes 2024-05-01 08:33:04 +02:00
bitcoin.qrc
bitcoin_locale.qrc qt: 28.0 translations update 2024-08-26 08:38:58 +01:00
bitcoinaddressvalidator.cpp
bitcoinaddressvalidator.h
bitcoinamountfield.cpp Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in src/qt 2023-01-17 09:54:56 +00:00
bitcoinamountfield.h clang-tidy, qt: Fix modernize-use-default-member-init in headers 2022-12-16 11:58:38 +00:00
bitcoingui.cpp gui: Use menu for wallet migration 2024-08-13 19:18:11 -04:00
bitcoingui.h scripted-diff: Add IWYU pragma keep to bitcoin-config.h includes 2024-05-01 08:33:04 +02:00
bitcoinstrings.cpp qt: Update translation source file for v28.0 string freeze 2024-08-14 14:14:10 +01:00
bitcoinunits.cpp qt, refactor: Remove default cases for scoped enum 2022-02-22 13:50:30 -08:00
bitcoinunits.h qt, refactor: Remove BitcoinUnits::valid function 2022-02-22 13:50:30 -08:00
clientmodel.cpp Merge bitcoin-core/gui#626: Showing Local Addresses in Node Window 2024-08-02 14:19:02 +01:00
clientmodel.h Merge bitcoin-core/gui#626: Showing Local Addresses in Node Window 2024-08-02 14:19:02 +01:00
CMakeLists.txt cmake: Add AddWindowsResources module 2024-08-16 21:19:11 +01:00
coincontroldialog.cpp refactor: remove TxidFromString 2024-07-31 16:47:39 +01:00
coincontroldialog.h qt: remove confusing "Dust" label from coincontrol / sendcoins dialog 2023-07-03 18:06:48 +02:00
coincontroltreewidget.cpp
coincontroltreewidget.h
createwalletdialog.cpp scripted-diff: Add IWYU pragma keep to bitcoin-config.h includes 2024-05-01 08:33:04 +02:00
createwalletdialog.h gui: remove legacy wallet creation 2023-10-06 17:20:54 -03:00
csvmodelwriter.cpp clang-tidy, qt: Fix modernize-use-default-member-init in headers 2022-12-16 11:58:38 +00:00
csvmodelwriter.h clang-tidy, qt: Fix modernize-use-default-member-init in headers 2022-12-16 11:58:38 +00:00
editaddressdialog.cpp wallet: Replace use of purpose strings with an enum 2023-04-11 15:55:31 -04:00
editaddressdialog.h clang-tidy, qt: Fix modernize-use-default-member-init in headers 2022-12-16 11:58:38 +00:00
guiconstants.h testnet: Introduce Testnet4 2024-08-06 01:38:10 +02:00
guiutil.cpp gui: Consolidate wallet display name to GUIUtil function 2024-08-13 11:25:38 -04:00
guiutil.h gui: Consolidate wallet display name to GUIUtil function 2024-08-13 11:25:38 -04:00
initexecutor.cpp refactor: Extract util/exception from util/system 2023-03-13 17:09:47 +01:00
initexecutor.h
intro.cpp scripted-diff: Add IWYU pragma keep to bitcoin-config.h includes 2024-05-01 08:33:04 +02:00
intro.h GUI/Intro: Never change the prune checkbox after the user has touched it 2023-06-29 23:24:39 +00:00
macdockiconhandler.h
macdockiconhandler.mm
macnotificationhandler.h
macnotificationhandler.mm
macos_appnap.h
macos_appnap.mm
main.cpp refactor: Remove hooking code for urlDecode 2024-04-24 23:23:38 +02:00
Makefile
modaloverlay.cpp Merge bitcoin-core/gui#795: Keep focus on "Hide" while ModalOverlay is visible 2024-07-15 10:47:09 +01:00
modaloverlay.h Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in src/qt 2023-01-17 09:54:56 +00:00
networkstyle.cpp testnet: Introduce Testnet4 2024-08-06 01:38:10 +02:00
networkstyle.h refactor: Replace string chain name constants with ChainTypes 2023-05-09 15:49:14 +02:00
notificator.cpp scripted-diff: Add IWYU pragma keep to bitcoin-config.h includes 2024-05-01 08:33:04 +02:00
notificator.h scripted-diff: Add IWYU pragma keep to bitcoin-config.h includes 2024-05-01 08:33:04 +02:00
openuridialog.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
openuridialog.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
optionsdialog.cpp Merge bitcoin-core/gui#826: OptionsDialog: Allow Maximize of window 2024-08-04 16:29:31 +01:00
optionsdialog.h Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in src/qt 2023-01-17 09:54:56 +00:00
optionsmodel.cpp scripted-diff: Add IWYU pragma keep to bitcoin-config.h includes 2024-05-01 08:33:04 +02:00
optionsmodel.h GUI: OptionsDialog: Replace verbose two-option font selector with simple combobox with Custom... choice 2023-07-21 17:47:17 +00:00
overviewpage.cpp GUI: Move "embedded font or not" decision into new OptionsModel::getFontForMoney method 2023-07-21 17:45:21 +00:00
overviewpage.h GUI: Move "embedded font or not" decision into new OptionsModel::getFontForMoney method 2023-07-21 17:45:21 +00:00
paymentserver.cpp scripted-diff: Fix bitcoin_config_h includes 2024-02-13 20:10:44 +00:00
paymentserver.h scripted-diff: Fix bitcoin_config_h includes 2024-02-13 20:10:44 +00:00
peertablemodel.cpp Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in src/qt 2023-01-17 09:54:56 +00:00
peertablemodel.h Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in src/qt 2023-01-17 09:54:56 +00:00
peertablesortproxy.cpp scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
peertablesortproxy.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
platformstyle.cpp clang-tidy: Add performance-no-automatic-move check 2022-12-27 15:25:51 +00:00
platformstyle.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
psbtoperationsdialog.cpp util: add TransactionError includes and namespace declarations 2024-05-16 10:16:08 -05:00
psbtoperationsdialog.h qt, refactor: Drop superfluous type conversions 2023-10-23 15:06:29 +01:00
qrimagewidget.cpp scripted-diff: Add IWYU pragma keep to bitcoin-config.h includes 2024-05-01 08:33:04 +02:00
qrimagewidget.h clang-tidy, qt: Fix modernize-use-default-member-init in headers 2022-12-16 11:58:38 +00:00
qvalidatedlineedit.cpp Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in src/qt 2023-01-17 09:54:56 +00:00
qvalidatedlineedit.h Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in src/qt 2023-01-17 09:54:56 +00:00
qvaluecombobox.cpp clang-tidy, qt: Fix modernize-use-default-member-init in headers 2022-12-16 11:58:38 +00:00
qvaluecombobox.h clang-tidy, qt: Fix modernize-use-default-member-init in headers 2022-12-16 11:58:38 +00:00
README.md doc: Update for CMake-based build system 2024-08-16 21:24:08 +01:00
receivecoinsdialog.cpp GUI: Support translating address type dropdown entries 2023-03-31 12:21:11 +01:00
receivecoinsdialog.h clang-tidy, qt: Fix modernize-use-default-member-init in headers 2022-12-16 11:58:38 +00:00
receiverequestdialog.cpp scripted-diff: Add IWYU pragma keep to bitcoin-config.h includes 2024-05-01 08:33:04 +02:00
receiverequestdialog.h clang-tidy, qt: Fix modernize-use-default-member-init in headers 2022-12-16 11:58:38 +00:00
recentrequeststablemodel.cpp util: Move util/string.h functions to util namespace 2024-05-16 10:16:08 -05:00
recentrequeststablemodel.h clang-tidy, qt: Fix modernize-use-default-member-init in headers 2022-12-16 11:58:38 +00:00
rpcconsole.cpp Merge bitcoin-core/gui#626: Showing Local Addresses in Node Window 2024-08-02 14:19:02 +01:00
rpcconsole.h gui: show maximum mempool size in information window 2024-06-20 18:01:58 +02:00
sendcoinsdialog.cpp util: add TransactionError includes and namespace declarations 2024-05-16 10:16:08 -05:00
sendcoinsdialog.h Merge bitcoin-core/gui#719: Remove confusing "Dust" label from coincontrol / sendcoins dialog 2023-07-04 16:03:30 +01:00
sendcoinsentry.cpp scripted-diff: Fix bitcoin_config_h includes 2024-02-13 20:10:44 +00:00
sendcoinsentry.h Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in src/qt 2023-01-17 09:54:56 +00:00
sendcoinsrecipient.h scripted-diff: Fix bitcoin_config_h includes 2024-02-13 20:10:44 +00:00
signverifymessagedialog.cpp util: move util/message to common/signmessage 2024-05-16 11:16:08 -04:00
signverifymessagedialog.h clang-tidy, qt: Fix modernize-use-default-member-init in headers 2022-12-16 11:58:38 +00:00
splashscreen.cpp scripted-diff: Add IWYU pragma keep to bitcoin-config.h includes 2024-05-01 08:33:04 +02:00
splashscreen.h Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in src/qt 2023-01-17 09:54:56 +00:00
trafficgraphwidget.cpp clang-tidy: Add performance-type-promotion-in-math-fn check 2023-03-26 20:18:03 +01:00
trafficgraphwidget.h Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in src/qt 2023-01-17 09:54:56 +00:00
transactiondesc.cpp scripted-diff: Fix bitcoin_config_h includes 2024-02-13 20:10:44 +00:00
transactiondesc.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
transactiondescdialog.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
transactiondescdialog.h
transactionfilterproxy.cpp Correctly limit overview transaction list 2023-01-26 14:56:12 -05:00
transactionfilterproxy.h Correctly limit overview transaction list 2023-01-26 14:56:12 -05:00
transactionoverviewwidget.cpp scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
transactionoverviewwidget.h scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
transactionrecord.cpp Merge bitcoin-core/gui#119: Replace send-to-self with dual send+receive entries 2023-09-22 18:29:51 +01:00
transactionrecord.h Merge bitcoin-core/gui#119: Replace send-to-self with dual send+receive entries 2023-09-22 18:29:51 +01:00
transactiontablemodel.cpp scripted-diff: Rename SetHex to SetHexDeprecated 2024-07-24 09:15:34 +02:00
transactiontablemodel.h clang-tidy, qt: Fix modernize-use-default-member-init in headers 2022-12-16 11:58:38 +00:00
transactionview.cpp scripted-diff: Rename SetHex to SetHexDeprecated 2024-07-24 09:15:34 +02:00
transactionview.h qt: mask values on transactions view 2023-03-10 14:52:01 -03:00
utilitydialog.cpp Merge bitcoin/bitcoin#29658: Bugfix: GUI: Help messages already have a trailing newline, so don't add an extra one 2024-05-12 14:21:21 +01:00
utilitydialog.h
walletcontroller.cpp gui: Use wallet name for wallet migration rather than WalletModel 2024-08-13 11:25:38 -04:00
walletcontroller.h gui: Use wallet name for wallet migration rather than WalletModel 2024-08-13 11:25:38 -04:00
walletframe.cpp refactor: Move fs.* to util/fs.* 2023-03-23 12:55:18 +01:00
walletframe.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
walletmodel.cpp gui: Consolidate wallet display name to GUIUtil function 2024-08-13 11:25:38 -04:00
walletmodel.h wallet: return and display signer error 2024-04-16 17:47:43 +02:00
walletmodeltransaction.cpp scripted-diff: Fix bitcoin_config_h includes 2024-02-13 20:10:44 +00:00
walletmodeltransaction.h clang-tidy, qt: Fix modernize-use-default-member-init in headers 2022-12-16 11:58:38 +00:00
walletview.cpp refactor: Avoid implicit-integer-sign-change in processNewTransaction 2024-03-21 19:40:55 +01:00
walletview.h qt: mask values on transactions view 2023-03-10 14:52:01 -03:00
winshutdownmonitor.cpp refactor: Remove call to StartShutdown from qt 2023-12-04 15:39:15 -04:00
winshutdownmonitor.h qt: Avoid non-self-contained Windows header 2024-01-25 10:26:26 +00:00

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:

./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 bitcoingui and several models like peertablemodel.

*page.(h/cpp)

  • A controller. :NAMEpage.cpp generally includes :NAMEmodel.h and forms/:NAME.page.ui with 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 generated
  • bitcoinunits.(h/cpp): BTC / mBTC / etc. handling
  • callback.h
  • guiconstants.h: UI colors, app name, etc.
  • guiutil.h: several helper functions
  • macdockiconhandler.(h/mm): macOS dock icon handler
  • macnotificationhandler.(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

  1. Make sure you've installed all dependencies specified in your systems build instructions
  2. Follow the compile instructions for your system, run ./configure with the --enable-debug flag
  3. Start Qt Creator. At the start page, do: New -> Import Project -> Import Existing Project
  4. Enter bitcoin-qt as the Project Name and enter the absolute path to src/qt as Location
  5. Check over the file selection, you may need to select the forms directory (necessary if you intend to edit *.ui files)
  6. Confirm the Summary page
  7. In the Projects tab, select Manage 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
  1. While in the Projects tab, ensure that you have the bitcoin-qt executable specified under Run
  • If the executable is not specified: click "Choose...", navigate to src/qt, and select bitcoin-qt
  1. You're all set! Start developing, building, and debugging the Bitcoin Core GUI