无法定位程序输入点 hitButton@QPushButton

无法定位程序输入点

我曾经成功过,今天又不行了不能运行,我得知道为什么行,为什么不行

这次是使用windeployqt 自动拷贝dll文件,经过过对比各个dll,我发现deploy自动找的dll不对。 

 左边是deploy 自动拷贝的, exe文件不能运行,右边是我之前自己手动找的,exe 能运行,同一文件的大小不一样。

我们来看看错误的东西是从哪里拷贝的,很奇怪,我的qt 目录下没有4990kb大小的那个qt5core.dll。我搜索了一遍也没找到,溜了溜了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是一个简单的21游戏的Java图形化界面实现,你可以在此基础上进行扩展和优化。 ```java import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Collections; public class TwentyOneGame extends JFrame implements ActionListener { private final int WIDTH = 800; private final int HEIGHT = 600; private final int CARD_WIDTH = 71; private final int CARD_HEIGHT = 96; private JLabel playerLabel; private JLabel dealerLabel; private JLabel resultLabel; private JButton hitButton; private JButton standButton; private JButton newGameButton; private ArrayList<Card> deck; private ArrayList<Card> playerHand; private ArrayList<Card> dealerHand; private int playerScore; private int dealerScore; public TwentyOneGame() { setTitle("Twenty-One Game"); setSize(WIDTH, HEIGHT); setDefaultCloseOperation(EXIT_ON_CLOSE); JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); add(panel); playerLabel = new JLabel("Player's Hand"); dealerLabel = new JLabel("Dealer's Hand"); resultLabel = new JLabel(""); hitButton = new JButton("Hit"); standButton = new JButton("Stand"); newGameButton = new JButton("New Game"); hitButton.addActionListener(this); standButton.addActionListener(this); newGameButton.addActionListener(this); panel.add(playerLabel); panel.add(Box.createRigidArea(new Dimension(0, 10))); panel.add(dealerLabel); panel.add(Box.createRigidArea(new Dimension(0, 10))); panel.add(hitButton); panel.add(Box.createRigidArea(new Dimension(0, 10))); panel.add(standButton); panel.add(Box.createRigidArea(new Dimension(0, 10))); panel.add(newGameButton); panel.add(Box.createRigidArea(new Dimension(0, 10))); panel.add(resultLabel); newGame(); } private void newGame() { deck = new ArrayList<>(); for (Suit suit : Suit.values()) { for (Rank rank : Rank.values()) { deck.add(new Card(rank, suit)); } } Collections.shuffle(deck); playerHand = new ArrayList<>(); dealerHand = new ArrayList<>(); playerHand.add(dealCard()); playerHand.add(dealCard()); dealerHand.add(dealCard()); dealerHand.add(dealCard()); playerScore = calculateScore(playerHand); dealerScore = calculateScore(dealerHand); updatePlayerLabel(); updateDealerLabel(); updateResultLabel(); hitButton.setEnabled(true); standButton.setEnabled(true); } private Card dealCard() { return deck.remove(0); } private int calculateScore(ArrayList<Card> hand) { int score = 0; for (Card card : hand) { if (card.getRank().getValue() == 1) { if (score + 11 <= 21) { score += 11; } else { score += 1; } } else { score += Math.min(card.getRank().getValue(), 10); } } return score; } private void updatePlayerLabel() { playerLabel.setText("Player's Hand (" + playerScore + "):"); JPanel playerPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); for (Card card : playerHand) { playerPanel.add(new JLabel(new ImageIcon(card.getImage().getScaledInstance(CARD_WIDTH, CARD_HEIGHT, Image.SCALE_SMOOTH)))); } playerLabel.setLabelFor(playerPanel); playerLabel.add(playerPanel); } private void updateDealerLabel() { dealerLabel.setText("Dealer's Hand (" + dealerHand.get(0).getRank().getValue() + "):"); JPanel dealerPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); dealerPanel.add(new JLabel(new ImageIcon(dealerHand.get(0).getImage().getScaledInstance(CARD_WIDTH, CARD_HEIGHT, Image.SCALE_SMOOTH)))); if (dealerHand.size() == 2) { dealerPanel.add(new JLabel(new ImageIcon(Card.getBackImage().getScaledInstance(CARD_WIDTH, CARD_HEIGHT, Image.SCALE_SMOOTH)))); } dealerLabel.setLabelFor(dealerPanel); dealerLabel.add(dealerPanel); } private void updateResultLabel() { if (playerScore > 21) { resultLabel.setText("Player busts! Dealer wins!"); hitButton.setEnabled(false); standButton.setEnabled(false); } else if (dealerScore > 21) { resultLabel.setText("Dealer busts! Player wins!"); hitButton.setEnabled(false); standButton.setEnabled(false); } else if (!hitButton.isEnabled()) { if (playerScore > dealerScore) { resultLabel.setText("Player wins!"); } else if (playerScore < dealerScore) { resultLabel.setText("Dealer wins!"); } else { resultLabel.setText("Push!"); } } } private void dealerTurn() { while (dealerScore < 17) { dealerHand.add(dealCard()); dealerScore = calculateScore(dealerHand); updateDealerLabel(); } hitButton.setEnabled(false); standButton.setEnabled(false); updateResultLabel(); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == hitButton) { playerHand.add(dealCard()); playerScore = calculateScore(playerHand); updatePlayerLabel(); if (playerScore > 21) { dealerTurn(); } } else if (e.getSource() == standButton) { dealerTurn(); } else if (e.getSource() == newGameButton) { for (Component component : playerLabel.getComponents()) { if (component instanceof JPanel) { playerLabel.remove(component); } } for (Component component : dealerLabel.getComponents()) { if (component instanceof JPanel) { dealerLabel.remove(component); } } resultLabel.setText(""); newGame(); } } public static void main(String[] args) { TwentyOneGame game = new TwentyOneGame(); game.setVisible(true); } } ``` 此代码中用到了一个 `Card` 类,用于表示扑克牌,其中包括花色(`Suit`)和数(`Rank`)两个枚举类型,以及获取对应图片的方法。 ```java import javax.swing.*; import java.awt.*; public class Card { private final Rank rank; private final Suit suit; public Card(Rank rank, Suit suit) { this.rank = rank; this.suit = suit; } public Rank getRank() { return rank; } public Suit getSuit() { return suit; } public Image getImage() { String filename = "cards/" + rank.getValue() + suit.getName() + ".png"; return new ImageIcon(filename).getImage(); } public static Image getBackImage() { return new ImageIcon("cards/back.png").getImage(); } } ``` 枚举类型 `Rank` 和 `Suit` 的定义如下: ```java public enum Rank { ACE(1, "A"), TWO(2, "2"), THREE(3, "3"), FOUR(4, "4"), FIVE(5, "5"), SIX(6, "6"), SEVEN(7, "7"), EIGHT(8, "8"), NINE(9, "9"), TEN(10, "10"), JACK(10, "J"), QUEEN(10, "Q"), KING(10, "K"); private final int value; private final String name; Rank(int value, String name) { this.value = value; this.name = name; } public int getValue() { return value; } public String getName() { return name; } } public enum Suit { CLUBS("C"), DIAMONDS("D"), HEARTS("H"), SPADES("S"); private final String name; Suit(String name) { this.name = name; } public String getName() { return name; } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值