2008-10-03 27 views

Trả lời

4

Thật không may điều này là không thể trong Qt4.

Trong Qt3, bạn có thể tạo các vị trí tùy chỉnh, nơi mà sau đó được triển khai trong tệp ui.h. Tuy nhiên, Qt4 không sử dụng tệp này để các vùng tùy chỉnh không được hỗ trợ.

Có một số cuộc thảo luận về vấn đề này trên trên QtForum

+0

Các nhà thiết kế qt4 hỗ trợ đọc khe tùy chỉnh được tạo ra trong các hình thức chuyển từ qt3. Nó đã cho tôi ấn tượng rằng nó cũng có thể tạo ra nó. – user24560

+0

Xem bình luận của raigon dưới đây, điều này hiện có thể. – OliJG

3

này dường như không thể theo một cách đơn giản.

Nhà thiết kế chỉ cho phép bạn quảng cáo các tiện ích hiện có cho tiện ích con tùy chỉnh của riêng bạn. nhưng nó không cho phép bạn kết nối các tín hiệu và các khe của lớp của các widget được quảng cáo.

Cách này có thể là tạo plugin cho trình thiết kế là described here và trong các trang theo dõi nó.

Hành động bình thường là quảng bá tiện ích con cho lớp học của riêng bạn và sau đó kết nối tiện ích theo cách thủ công trong mã của riêng bạn. quá trình này được mô tả here

2

Không thể làm điều đó, bởi vì điều đó có nghĩa là bạn sẽ thêm một vị trí vào một lớp Qt hiện có như QPushButton mà thực sự không phải là cách để thực hiện.

Bạn nên tạo riêng của mình QWidget cuối cùng bằng cách phân lớp con hiện có. Sau đó tích hợp nó vào Qt Designer như một plugin như được đề xuất. Có lớp của riêng bạn cho phép bạn thêm/modifiy các tín hiệu/khe có sẵn như bạn muốn.

2

Đừng quên các tính năng tự động kết nối vị trí. Có một vài nhược điểm, như phải đổi tên chức năng của bạn nếu bạn đổi tên tiện ích của mình, nhưng chúng tôi sử dụng chúng rất nhiều ở công ty của tôi.

2

bạn có thể sử dụng định dạng khe kỳ diệu của

void on_objectName_signal() { 
// slot code here, where objectname is the Qt Designer object name 
// and the signal is the emission 
} 

Kết nối với phương pháp này được thành lập theo phương pháp connectSlotsByName và bất cứ khi nào các tín hiệu được phát ra, khe cắm này được gọi.

28

Điều này dường như có thể xảy ra trong phiên bản Qt Designer 4.5.2, nhưng không thể được thực hiện từ tiện ích con Dock/Slot Editor trong cửa sổ chính.

Đây là những gì làm việc cho tôi

  1. Đổi thành Edit Signals/Slots chế độ (F4)
  2. Kéo và thả từ widget mà là để phát ra tín hiệu, để các phụ tùng mà là để nhận tín hiệu.
  3. Hộp thoại Định cấu hình kết nối xuất hiện, hiển thị tín hiệu cho tiện ích phát ra và các vị trí cho tiện ích nhận. Nhấp vào Chỉnh sửa ... bên dưới cột vị trí ở bên phải. Hộp thoại
  4. A Tín hiệu/khe của ReceivingWidget xuất hiện. Tại đây, bạn có thể nhấp vào biểu tượng dấu cộng bên dưới các vị trí để thêm một vị trí mới của bất kỳ tên nào.
  5. Sau đó, bạn có thể quay lại và kết nối với khe mới của mình trong hộp thoại Định cấu hình kết nối hoặc thực sự trong Trình chỉnh sửa tín hiệu/khe cắm dockwidget trở lại trong cửa sổ chính.

Nên biết trước: Tôi đang sử dụng PyQt, và tôi đã chỉ cố gắng sử dụng khe cắm bổ sung theo cách này từ Python, không phải từ C++, vì vậy mileage của bạn có thể thay đổi ...

+3

Cả hai nút "Chỉnh sửa ..." trong hộp thoại Định cấu hình kết nối luôn chuyển sang màu xám cho tôi. – James

+0

Nút chỉnh sửa trong Định cấu hình kết nối bị tắt. Bạn đã nhấp vào nút đó như thế nào? –

+0

Tôi cũng có các nút màu xám nhưng cuối cùng cũng nhận thấy rằng nếu tôi kết nối Tín hiệu với cửa sổ chính, tôi có thể thêm các khe bằng cách sử dụng phương pháp được đưa ra ở đây. Dường như làm việc như mong đợi nhưng có nghĩa là bạn nhận được rất nhiều phương pháp trong cửa sổ chính thay vì trong các tiện ích riêng lẻ. –

1

Có lẽ nó sẽ Cứu giúp.

Theo mặc định, bạn phải chọn từ danh sách các vị trí hiện có. Nhưng bạn có thể thêm khe bằng cách nhấp chuột phải vào đối tượng trong danh sách ở bên phải của nhà thiết kế và chọn "vị trí/tín hiệu" và thêm vị trí/tín hiệu tùy chỉnh của bạn. Sau đó, bạn có thể chọn nó trong trình soạn thảo tín hiệu/khe.

0

nhấp vào widget bằng cách nút phải

thúc đẩy widget vào một lớp học mà bạn định nghĩa

nhấp vào widget bằng cách nút phải một lần nữa

bạn sẽ thấy tín hiệu đó và khe cắm có thể chỉnh sửa

26

nhấp chuột phải vào cửa sổ chính và chọn "thay đổi tín hiệu và vị trí" và thêm một vị trí mới. Nó sẽ xuất hiện trong trình chỉnh sửa vị trí tín hiệu của bạn.

+0

Đây là câu trả lời hay nhất. –

+0

Đây phải là câu trả lời được chấp nhận. – arainone

4

tôi có thể làm điều đó bằng cách:

Trong MainWindow.h, thêm dòng:

public slots: 
    void example(); 

trong lớp MainWindow.

Trong MainWindow.cpp

void MainWindow::example() { 
    <code> 
} 
Các vấn đề liên quan